2016-08-17 31 views
-2

私は電話がかかってきたときに通知する必要がある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

+3

https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-とネクサス6Pに表示されている デバイスそれ – CommonsWare

答えて

-2
if (ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED) { 

    // Should we show an explanation? 
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,Manifest.permission.READ_PHONE_STATE)) { 

     // Show an expanation to the user *asynchronously* -- don't block 
     // this thread waiting for the user's response! After the user 
     // sees the explanation, try again to request the permission. 

    } else { 

     // No explanation needed, we can request the permission. 

     ActivityCompat.requestPermissions(thisActivity, 
      new String[]{Manifest.permission.READ_PHONE_STATE}, 
      MY_PERMISSIONS_REQUEST_READ_CONTACTS); 

     // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an 
     // app-defined int constant. The callback method gets the 
     // result of the request. 
    } 
} 
関連する問題