Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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
Android 电话呼叫权限在Dexter中不起作用_Android_Android Intent_Android Permissions_Android Phone Call - Fatal编程技术网

Android 电话呼叫权限在Dexter中不起作用

Android 电话呼叫权限在Dexter中不起作用,android,android-intent,android-permissions,android-phone-call,Android,Android Intent,Android Permissions,Android Phone Call,我已经在我的应用程序中实现了。摄像机、外部存储和内部存储许可都可以正常工作。我想打电话给您,请允许我打电话。当我为这样的电话打电话时: Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + strNum)); startActivity(callIntent); 然后startActivity显示警告调用需要权限,用户可能会拒绝该权限:代码应显式检查权限是否可用(使用checkPermission)或显式处理

我已经在我的应用程序中实现了。摄像机、外部存储和内部存储许可都可以正常工作。我想打电话给您,请允许我打电话。当我为这样的电话打电话时:

Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + strNum));
startActivity(callIntent);
然后
startActivity
显示警告
调用需要权限,用户可能会拒绝该权限:代码应显式检查权限是否可用(使用checkPermission)或显式处理潜在的SecurityException less。。。(Ctrl+F1)


我不明白为什么我已经实现了startActivity想要自我许可?

对于API 23+,您应该检查许可,如下所示:

if (mContext.checkSelfPermission(Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
    Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + strNum));
    startActivity(callIntent):   
}
Intent.ACTION\u CALL Intent
,它需要一个权限,即android.permission.CALL\u手机。但是对于sdk>=23,您需要在运行时使用
Manifest.permission.CALL\u PHONE
检查。适用于targetedsdk23及以上版本


如果您将targetedsdkversion降低到23以下,则不需要此任务和
意图。调用操作将正常工作

我也有类似的问题。对我来说,当我试图打电话的时候,我的理由就显现出来了。我添加了manifest标签:

    <uses-permission android:name="android.permission.CALL_PHONE" />


我不知道为什么除了使用Dexter运行时检查之外还要这样做,但它解决了我的问题。

我知道这一点。但我使用了Dexter库作为权限模型。那么为什么我必须检查自我许可,另一件事是,如果我使用
Intent.ACTION\u DIAL
而不是
Intent.ACTION\u CALL
,那么它不会显示警告。所以我不明白我该怎么办?检查我编辑的答案。。Intent.ACTION\u拨号不会直接拨打电话。它会将您插入的号码显示在拨号器上。这就是为什么Intent.ACTION\u拨号在用户确认手动拨打电话时不需要权限的原因。我只想通过Dexter检查电话呼叫权限。有没有可能?如果可能的话,怎么做?是的,你可以把你的targetedsdk版本降低到23以下。。但是对于sdk>23,您应该检查它