Android 四大组件之 ContentProvider
一、权限申请
Android 6.0开始,所有涉及用户隐私的权限都需要运行时申请。
AndroidManifest.xml 中声明读取短信的权限
<uses-permission android:name = "android.permission.READ_CONTACTS"/>
运行时动态申请权限,请求用户权限
ActivityCompat.checkSelfPermission() 检查权限是否已授权,如果没有授权,则需要向用户申请。
ActivityCompat.requestPermissions() 发起权限申请,会弹出对话框。
ActivityCompat.shouldShowRequestPermissionRationale() 检查用户是否已经永久拒绝,如果已经永久拒绝即使再次调用ActivityCompat.requestPermissions() 系统也不会弹框申请权限。
onRequestPermissionsRequest: 处理授权的结果。
案例:
class PermissionActivity:AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
if(ActivityCompat.checkSelfPermission(this, android.Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.READ_SMS), 100)
}else{
//code
...
...
}
}
override fun onRequestPermissionsResult(
requestCode : Int,
permissions : Array<out String>,
grantResults : IntArray
){
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
//处理授权结果
}
}
二、常用权限
1.权限声明
AndroidManifest.xml中声明权限
<!-- 声明写权限 -->
<uses-permission android:name = "android.permission.WRITE_CONTACTS"/>
<!-- 声明读权限 -->
<uses-permission android:name = "android.permission.READ_CONTACTS"/>
2. 常用表
2.1 联系人表:
content://com.android.contacts/
2.2 短信表:
content://sms/
| uri | 说明 |
|---|---|
| content://sms/ | 所有短信 |
| content://sms/inbox | 收件箱 |
| content://sms/sent | 已发送 |
| content://sms/draft | 草搞 |
| content://sms/failed | 发送失败 |
| content://sms/outbox | 发件箱 |
| content://sms/queued | 待发送列表 |
本文详细介绍了Android 6.0及以上版本的权限动态申请机制,包括如何在AndroidManifest.xml中声明权限和运行时请求用户授权。同时,文章讲解了ContentProvider的使用,特别是针对联系人和短信表的访问,列举了多个URI示例,帮助开发者理解如何通过ContentProvider操作这些数据。
3021

被折叠的 条评论
为什么被折叠?



