私は電話がかかってきたときに通知する必要があるAndroidアプリケーションに取り組んでいます。私は、アプリケーションがアクティブでなくても着信に関する通知を受けたいので、BroadcastReceiverでアプローチを使用します。したがって、TelephonyManagerとPhoneStateListenerを使用するアプローチは私のニーズに合っていません。 だから、私のアプリケーションは、マニフェストで適切な権限を持っていますREAD_PHONE_STATEの許可拒否
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
また、適切マニフェストにおける放送受信機を登録します。
<receiver android:enabled="true" android:name=".CallReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
クラスCallReceiverはBroadcastReceiverを実装していますが、私は、アプリケーションを起動したら、その方法CallReceiverのonReceive決して呼び出されることはありません。私が説明したように、私はすでにマニフェストにREAD_PHONE_STATEパーミッションを入れ
W/BroadcastQueue: Permission Denial: receiving Intent { act=android.intent.action.PHONE_STATE flg=0x10 (has extras) } to com.example.incomingcall/.CallReceiver requires android.permission.READ_PRIVILEGED_PHONE_STATE due to sender android (uid 1000)
W/BroadcastQueue: Permission Denial: receiving Intent { act=android.intent.action.PHONE_STATE flg=0x10 (has extras) } to com.example.incomingcall/.CallReceiver requires android.permission.READ_PHONE_STATE due to sender android (uid 1000)
他の一方で、私は、ログ内のメッセージたびに電話が鳴る以下見られるように、このための 理由は、そのシステムは、私の放送受信機への意思を実現するために拒否していますここで指定された許可は、マニフェストに配置できないシステム権限です。どのようにこの問題を克服するための任意のアイデア?これは、Android 6.0.1
https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-とネクサス6Pに表示されている デバイスそれ – CommonsWare