Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用需要用户可能拒绝的权限_Java_Android - Fatal编程技术网

Java 调用需要用户可能拒绝的权限

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

我的函数isPhoneSupported()显示此错误

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的完全集成,您可以参考

  • 检查这个