好友
阅读权限20
听众
最后登录1970-1-1
|
咬字分开念
发表于 2023-8-28 13:41
如代码所示,申请READ_SMS,READ_CALL_LOG,ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION,ACCESS_BACKGROUND_LOCATION
其中ACCESS_BACKGROUND_LOCATION在安卓12以上需要单独申请,如果一起申请会被系统拒绝
如果用原始kotlin的代码来实现需要用requestSmsPermission
这对于回调就需要多写一个结果接收方法,代码就比较乱
下面这个就是引用了
implementation 'com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar'
然后一个val就可以全部搞定[Java] 纯文本查看 复制代码 fun qxapply(){
val rxPermissions = RxPermissions(this)
// 判断当前设备的Android版本是否为Android 12及以上因为高版本需要单独申请ACCESS_BACKGROUND_LOCATION
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
rxPermissions.requestEach(
Manifest.permission.READ_SMS,
Manifest.permission.READ_CALL_LOG,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
)
.subscribe { permission ->
if (permission.granted) {
appinis.errtxt += "权限所有已被授予\n"
} else if (permission.shouldShowRequestPermissionRationale) {
appinis.errtxt += "用户拒绝了权限申请\n"
} else {
appinis.errtxt += "用户拒绝了权限申请,并勾选了\"不再询问\"选项\n"
}
}
rxPermissions.request(
Manifest.permission.ACCESS_BACKGROUND_LOCATION
)
.subscribe { granted ->
if (granted) {
appinis.errtxt += "*ACCESS_BACKGROUND_LOCATION权限已被授予\n"
} else {
appinis.errtxt += "*ACCESS_BACKGROUND_LOCATION权限被拒绝\n"
}
}
} else {
// 针对Android 12以下版本,正常申请这5个权限
rxPermissions.request(
Manifest.permission.READ_SMS,
Manifest.permission.READ_CALL_LOG,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION
)
.subscribe { granted ->
if (granted) {
appinis.errtxt += "*android12权限已被授予\n"
} else {
appinis.errtxt += "*android12权限被拒绝\n"
}
}
}
} |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|