Cum se acordă persiomission com.sec.android.provider.badge.permission.READ sau WRITE în android 6.0 (Programare, Android)

Avinash a intrebat.
a intrebat.

Încerc să arăt insigna pe pictograma aplicației atunci când notificarea a venit de la server.

Primesc această excepție:

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 răspunsuri
Katharina

De la Android 6.0 trebuie să solicitați permisiuni la Runtime înainte de a avea nevoie de ele.

Exemplul de mai jos este pentru permisiunea WRITE (bănuiesc că ai vrea să adaugi o insignă la pictograma aplicației și, în mod normal, nu ai nevoie de permisiunea READ pentru asta – dacă ai nevoie de ea, o poți solicita la fel ca și permisiunea WRITE)

În primul rând, adăugați permisiunile în Manifest:

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

Apoi puteți verifica dacă acestea sunt acordate în timpul execuției, astfel:

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 :)
}

Rezultatul va fi disponibil în 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);
}

Puteți citi mai multe despre acest lucru în secțiunea documente oficiale

Comentarii

  • nu vă faceți griji – vă rugăm să acceptați dacă v-a ajutat să rezolvați problema? –  > Por Katharina.
  • Dacă îmi permiteți, aș vrea să pun o întrebare cu privire la insigna fcm? –  > Por Avinash.
  • Din păcate, nu prea am experiență în acest domeniu… Știu doar despre permisiuni ;-), dar pot încerca – dar ar fi mai bine dacă ați pune o întrebare separată –  > Por Katharina.

Tags: