Java 广播接收器的权限拒绝

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

我正在尝试创建一个应用程序,在我拨打外线电话时输入日志消息

然而,当我运行代码时,我得到了一个权限拒绝,尽管我已经输入了权限

拒绝日志:

“09-04 02:35:50.535 1294-1666/?带广播队列﹕ 权限拒绝:接收samples.varma.packagecom.testreceive2/.CallReceiver需要android.Permission.PROCESS\u传出的呼叫flg=0x1000010(具有额外功能)}

舱单代码:

<?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"