BoradcastReceiver
通过Action标识,可以自定义Action定义自己的广播
动态注册
addAction("android.net.conn.CONNECTIVITY_CHANGE"); //网络变化
静态注册
<!-- 开机广播 -->
<receiver android:name=".TestBroadCast" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
sendOrderedBroadcast 有序广播 abortBroadcast()可以截断
sendBroadcast 标准广播
sendStickyBroadcast 粘性广播 Android P中废弃,有安全性问题
LocalBroadcastManager 实现本地广播
Content Provider
用于共享资源
查询通讯录
//参数1:唯一标识的URI,这里直接用Contacts.CONTENT\_URI
//参数2:你需要查询的字段,这里就只查询联系人id和姓名:
//参数3:查询的条件
//参数4:查询的多个条件
//参数5:查询的结果排序
//查询结果是一个Cursor(游标)对象,也就是结果集,对其进行遍历;
ContentResolver resolver = getContentResolver();
Cursor c = resolver.query(ContactsContract.Contacts.CONTENT_URI, new String[] {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME}, null, null, null);
while (c.moveToNext()) {
int id = c.getInt(c.getColumnIndex(ContactsContract.Contacts.\_ID));
Cursor c1 = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT\_URI, new String\[\] {ContactsContract.CommonDataKinds.Phone.NUMBER}, ContactsContract.CommonDataKinds.Phone.CONTACT\_ID \+ "=" \+ id, null, null);
while (c1.moveToNext()) {
String number = c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
}
FileProvider 是ContentProvider的子类
7.0以后file://Uri不能使用,可以使用content://
需要声明
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="set_your_package_name"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepath_data" />
</provider>
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path name="my_files" path="tempfiles" />
<external-path name="my_external" path="Download"/>
<cache-path name="my_cache" />
</paths>
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Uri uri = FileProvider.getUriForFile(CameraActivity.this, "app的包名.fileProvider", photoFile);
} else {
Uri uri = Uri.fromFile(photoFile);
}
需要授予这个uri临时权限
android:grantUriPermissions
intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
下面的将只允许以下前缀的拥有权限
<grant-uri-permission android:pathPrefix="/hello" />
————————————————
版权声明:本文为CSDN博主「爱博客大伯」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013553...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。