【问题标题】:Call requires permission which maybe rejected by the user [duplicate]呼叫需要权限,可能被用户拒绝[重复]
【发布时间】:2018-01-30 15:28:00
【问题描述】:

我的函数 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()。 谁能告诉我如何克服这个问题??

【问题讨论】:

标签: java android


【解决方案1】:

这是因为您已向用户请求权限,而用户拒绝了它。 无论如何,如果这对您来说是强制性的,您应该一次又一次地向用户询问此权限,否则您可以在调用 getLine1Number() 之前添加一个检查,如果这是可选的。

【讨论】:

    【解决方案2】:

    您可以使用 RxPermissions 来简化权限处理流程。以下是您可以直接使用的 Rx 的一些代码 sn-p。

    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. 
            }
        });
    

    您可以使用上面的代码 sn-p 来有效地管理您项目中的权限模型。

    此外,为了快速集成,只需在模块的 build.gradle 中添加以下行以及上面的代码 sn-p。

        //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 的完整集成你可以参考

    1. Rx Permission

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2012-06-30
      相关资源
      最近更新 更多