【Android】BoradcastReceiver ContentProvider
16lz
2021-01-24
BoradcastReceiver
通过Action标识,可以自定义Action定义自己的广播
动态注册
addAction("android.net.conn.CONNECTIVITY_CHANGE"); //网络变化
静态注册
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://
需要声明
<?xml version="1.0" encoding="utf-8"?>
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);
下面的将只允许以下前缀的拥有权限
————————————————
版权声明:本文为CSDN博主「爱博客大伯」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013553...
更多相关文章
- android中Connection.hangup()和Call.hangup()
- Android(安卓)ScrollView嵌套ScrollView滚动的问题解决办法
- Python +appium 封装desired_caps模块
- android booting 启动过程
- Android(安卓)深入研究SQLite实例(六)
- ant android
- android gridview 组件 及九宫格的简单编写
- android TextView 设置部分文字背景色和文字颜色
- 关于android AbsSeekBar