有关权限申请的我就不多做介绍了,这里我们实现一个功能
1,当访问隐私功能时 申请权限
2,用户点击了拒绝,下次再进来的时候弹出友善的对话框
3,用户点击确定,呈现申请权限对话框
4,用户点击了同意申请的对话框,申请权限
5,申请成功了调用相关方法
override fun initData() {
//这里我们需要查询手机内的数据,访问内存信息
handlePermission()
}
//动态申请权限
private fun handlePermission(){
val permission = Manifest.permission.READ_EXTERNAL_STORAGE //这个是需要申请的权限信息
val checkPermission = context?.let{ActivityCompat.checkSelfPermission(it,permission)}
if(checkpermission == PackageManager.PERMISSION_GRANT){
//执行到这里说明用户已经申请了权限直接加载数据就可以
loadData()
}else{
//执行到这里说明没有权限了
if(activity?.let{
ActivityCompat.shouldShowRequestPermissionRationable(it,permission)
}!!){
//用户第一次拒绝后,可能没有看懂提示,第二次的时候就会执行到这里以友善的方式提示用户
alter("我们只会访问音乐文件"){
yesButton{
myRequestPermission()
}
noButton()
}.show()
}else{
//第一次提示 会以系统默认的弹框提示用户
myReqyestPermission()
}
}
private fun myRequestPermission(){
val permission = arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE)
//这是系统的方法
requestPermission(permission,0)
}
//接收权限的回调,也就是用户点击了确定后 加载数据
override fun onRequestPermissionResult(requestCode:Int, permission:Array<out String>,grantResult IntArray){
super.onRequestPermissionResult(requestCode, permission, grantResults)
if(grantRequest[0]==PackageManager.PERMISSION_GRANT){
loadData()
}
}
}