我创建了一个监控来电(来电和去电)的应用,并且在电话振铃期间,它会显示有关号码的详细信息。 来电一切正常,但是当用户拨打电话时,应用会因此错误而崩溃:
05-14 23:14:36.376 1427-1475/? W/BroadcastQueue: Permission Denial: receiving Intent { act=android.intent.action.PHONE_STATE flg=0x10 (has extras) } to ir.apptune.antispam/.CallReceiver requires android.permission.READ_PRIVILEGED_PHONE_STATE due to sender android (uid 1000)
这是我使用的sdk版本的详细信息:
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
我授予的权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.CALL_PHONE" />
如果授予权限,我也检查了运行时。它返回0表示是。但仍然是同样的错误。 另请考虑清单中的广播接收者声明:
<receiver
android:name=".CallReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
感谢任何帮助。
答案 0 :(得分:3)
READ_PRIVILEGED_PHONE_STATE具有特权|签名权限和第三方应用程序不能拥有此权限。