我在我的应用中实施了Dexter。它适用于CAMERA,EXTERNAL STORAGE和INTERNAL STORAGE许可。我想通过Dexter与PHONE_CALL权限通话。当我打电话给这样的电话时打算:
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + strNum));
startActivity(callIntent);
然后startActivity
显示警告Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission) or explicitly handle a potential SecurityException less... (Ctrl+F1)
我不明白我已实施Dexter为什么startActivity
需要自我许可?
答案 0 :(得分:2)
对于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_CALL intent
,需要权限,即 android.permission.CALL_PHONE 。但是对于sdk> = 23,您需要使用Manifest.permission.CALL_PHONE
检查运行时。这是针对targetsdkversion 23及以上。
如果你将目标sdkversion降低到23以下,那么你就不需要这种延迟,Intent.ACTION_CALL
可以正常工作。
答案 1 :(得分:0)
我有一个类似的问题。对我来说,当我尝试拨打电话时,我的辩解正在显示。我添加了清单标签:
<uses-permission android:name="android.permission.CALL_PHONE" />
不知道为什么除了使用Dexter运行时检查外还必须这样做,但这解决了我的问题。