Java 广播接收器的权限拒绝
我正在尝试创建一个应用程序,在我拨打外线电话时输入日志消息 然而,当我运行代码时,我得到了一个权限拒绝,尽管我已经输入了权限 拒绝日志: “09-04 02:35:50.535 1294-1666/?带广播队列﹕ 权限拒绝:接收samples.varma.packagecom.testreceive2/.CallReceiver需要android.Permission.PROCESS\u传出的呼叫flg=0x1000010(具有额外功能)} 舱单代码:Java 广播接收器的权限拒绝,java,android,android-intent,permissions,broadcastreceiver,Java,Android,Android Intent,Permissions,Broadcastreceiver,我正在尝试创建一个应用程序,在我拨打外线电话时输入日志消息 然而,当我运行代码时,我得到了一个权限拒绝,尽管我已经输入了权限 拒绝日志: “09-04 02:35:50.535 1294-1666/?带广播队列﹕ 权限拒绝:接收samples.varma.packagecom.testreceive2/.CallReceiver需要android.Permission.PROCESS\u传出的呼叫flg=0x1000010(具有额外功能)} 舱单代码: <?xml version="1.0
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="samples.varma.packagecom.testreceive2" >
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:enabled="true"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name=".CallReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
</application>
</manifest>
我对这一点非常陌生,所以很有可能会出现一些错误,或者我完全偏离了基准。无论如何,我将非常感谢任何指导。有人知道我为什么会被拒绝吗
谢谢
编辑:
它也给了我这些拒绝许可,即使我已经添加了电话状态许可
特权电话状态权限是系统权限,因此我无法添加
09-04 04:36:03.249 1294-1440/? W/BroadcastQueue﹕ Permission Denial: receiving Intent { act=android.intent.action.PHONE_STATE flg=0x10 (has extras) } to samples.varma.packagecom.testreceive2/.CallReceiver requires android.permission.READ_PRIVILEGED_PHONE_STATE due to sender android (uid 1000)
09-04 04:36:03.271 1294-1308/? W/BroadcastQueue﹕ Permission Denial: receiving Intent { act=android.intent.action.PHONE_STATE flg=0x10 (has extras) } to samples.varma.packagecom.testreceive2/.CallReceiver requires android.permission.READ_PHONE_STATE due to sender android (uid 1000)
1294-1308/? W/BroadcastQueue﹕ Permission Denial: receiving Intent { act=android.intent.action.PHONE_STATE flg=0x10 (has extras) } to samples.varma.packagecom.testreceive2/.CallReceiver requires android.permission.READ_PHONE_STATE due to sender android (uid 1000)
您应该在清单接收者中添加以下内容
<service android:name=".CallReceiver"
android:enabled="true"
android:exported="false" >
</service>
使用权限
打电话
而不是外出
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
我通过密切关注此链接使其正常工作(谢谢ajit) 最后,我取消了
手机状态
权限,在清单中将安卓:enabled=“true”
和安卓:exported=“true”
添加到我的接收者,将新的外出通话
权限重新定位到下面的应用程序(不确定是否有必要),删除预期的sdk版本,基本上从链接复制接收器
从接收方标记到清单标记的更新清单代码为:
<receiver
android:name=".testreceive3"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>-->
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />>-->
</manifest>
-->
>-->
我已经在Android emulator上启动了相同的应用程序,但没有任何帮助,甚至没有
android:enabled="true"
android:exported="true"
解决方案是进入设置->应用->我的应用->权限->打开手机权限
当您的代码在Android 6.0或更高版本上运行时,您需要在代码中应用运行时权限。最佳解决方案是当您运行代码激活usb调试时,请确保在开发人员设置中选择禁用权限监视器设置!操作系统将不再向应用程序请求权限。乐于助人:)
这将不会改变清单中的任何内容 请看你可以请你检查这个链接加载项清单,但行已经在上面的应用程序。它应该在代码的另一部分吗?
android:enabled="true"
android:exported="true"