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{
...
...
}
}
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 | 待发送列表 |
|