2017-05-23 15 views
0

通知アイコンがサーバーから来たときに、アプリアイコンにバッジを表示しようとしています。persiomissionを与える方法アンドロイド6.0でcom.sec.android.provider.badge.permission.READまたはWRITEを

私はこの例外を取得しています:

Caused by: java.lang.SecurityException: Permission Denial: opening provider com.sec.android.provider.badge.BadgeProvider from ProcessRecord{ab1124 10588:com.rehq.app/u0a175} (pid=10588, uid=10175) requires com.sec.android.provider.badge.permission.READ or com.sec.android.provider.badge.permission.WRITE 

答えて

1

のAndroid 6.0ので、あなたがそれらを必要とする前に、実行時のアクセス権を要求する必要があります。

以下の例は書き込み権限のためのものです(アプリアイコンにバッジを追加したいと思いますが、通常はこのためのREAD権限は必要ありません - 必要な場合は、 WRITE権限)

まずマニフェストにあなたの権限を追加します。

<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/> 

を彼らはこのように実行時に付与されているなら、あなたは確認することができます。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M 
      && ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED) { 
     //permissions not granted -> request them 
     requestPermissions(new String[] {Manifest.permission.WRITE_SETTINGS}, YOUR_REQUEST_CODE); 
} else { 
     //permissions are granted - do your stuff here :) 
} 

結果はonRequestPermissionResultでは利用できません。

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
             @NonNull int[] grantResults) { 
    if (requestCode == YOUR_REQUEST_CODE) { 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_SETTINGS) == PackageManager.PERMISSION_GRANTED) { 
      //permissions granted -> do your stuff ;-) 
     } 
     //Permission not granted -> react to it! 
     return; 
    } 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
} 

あなたはofficial docs

+0

確かにそれについての詳細を読むことができます...と感謝を答えるために... – Avi

+0

何の心配 - それはあなたを助けている場合、それを受け入れてください。問題を解決するには? – Katharina

+0

fcmバッジについて質問したいのですが? – Avi

関連する問題