Java 调用需要用户可能拒绝的权限
我的函数isPhoneSupported()显示此错误Java 调用需要用户可能拒绝的权限,java,android,Java,Android,我的函数isPhoneSupported()显示此错误 Call requires permission which maybe rejected by the user 我的职能如下: public boolean isPhoneSupported() { TelephonyManager mgr; String context = Context.TELEPHONY_SERVICE; mgr = (TelephonyManager) getS
Call requires permission which maybe rejected by the user
我的职能如下:
public boolean isPhoneSupported() {
TelephonyManager mgr;
String context = Context.TELEPHONY_SERVICE;
mgr = (TelephonyManager) getSystemService(context);
if (mgr.getLine1Number() == null)
{
return false;
}
else{
return true;
}
}
错误显示在:getLine1Number()中。
有人能告诉我如何克服这个问题吗???这是因为您向用户请求权限,但用户拒绝了。
无论如何,您应该一次又一次地向用户请求此权限,如果这对您来说是强制性的,否则您可以在调用
getLine1Number()
之前添加检查,如果这是可选的。您可以使用RxPermissions简化权限处理流程。下面是一些可以直接使用的Rx代码片段
RxPermissions rxPermissions = new RxPermissions(this); // where this is an Activity instance
rxPermissions
.requestEach(Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_SMS , Manifest.permission.READ_PHONE_NUMBERS)
.subscribe(permission -> { // will emit 3 Permission objects
if (permission.granted) {
// `permission.name` is granted !
} else if (permission.shouldShowRequestPermissionRationale) {
// Denied permission without ask never again
} else {
// Denied permission with ask never again
// Need to go to the settings for this.
}
});
您可以使用上面的代码片段来高效地管理项目中的权限模型
此外,为了快速集成,只需在模块的build.gradle中添加下面的行以及上面的代码片段
//RxAndroid
implementation "io.reactivex.rxjava2:rxandroid:${libraries.rxAndroid}"
// RxJava
implementation "io.reactivex.rxjava2:rxjava:${libraries.rxjava2}"
//RXpermissions
implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.8.1@aar'
RxPermission的完全集成,您可以参考
检查这个