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