如何删除Android Studio中的“调用需要权限,可能......”错误

时间:2016-08-02 11:52:27

标签: android permissions warnings android-6.0-marshmallow android-permissions

我的代码

private void continueCall() {
        Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("tel:" + phoneNoToCall));
        startActivity(callIntent);
}

以上要求用户在运行时授予权限CALL_PHONE,我已将其检查为

private void call() {
    if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
        continueCall();
    } else {
        requestCallPermission();
    }
}

仍然Android工作室显示错误“来电需要获得许可......”

如何删除此错误?或者至少压制它。

3 个答案:

答案 0 :(得分:4)

可以从多个地方调用方法continueCall()。因此,无法保证在call()

中进行权限检查

因此,您只能通过添加以下内容来抑制错误:

@SuppressWarnings("MissingPermission")

答案 1 :(得分:1)

你需要把

 Intent callIntent = new Intent(Intent.ACTION_CALL);
 callIntent.setData(Uri.parse("tel:" + phoneNoToCall));
 startActivity(callIntent);

在if块内

private void call() {
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
        Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("tel:" + phoneNoToCall));
        startActivity(callIntent);
   } else {
        requestCallPermission();
   }
}

答案 2 :(得分:0)

我认为您需要CALL_PRIVILEGED权限:

  

CALL_PRIVILEGED

     

在API级别1中添加

     

String CALL_PRIVILEGED允许应用程序拨打任何电话号码,   包括紧急号码,无需通过拨号用户   用户确认正在进行呼叫的界面。

     

不适用于第三方应用程序。

     

常量值:“android.permission.CALL_PRIVILEGED”