/ / Získanie výnimky v android 6.0 keď používam com.sec.android.provider.badge.BadgeProvider - android

Získanie výnimky v android 6.0, keď používam com.sec.android.provider.badge.BadgeProvider - android

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

Ktokoľvek má nejakú myšlienku vyriešiť túto výnimku?

Táto výnimka generovaná v android 6.0.

Neviem, ako dať povolenie com.sec.android.provider.badge.permission.READ alebo com.sec.android.provider.badge.permission.WRITE na android 6.0

odpovede:

1 pre odpoveď č. 1

Chystáte sa chyba, pretože nepovoľujete povolenie. Ako spustenie systému Android 6.0 musíte explicitne požiadať o povolenie

Najskôr deklarujte povolenie v manifestu ako

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

A potom vo svojej činnosti požiadajte o povolenie takto

boolean permission;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
permission = Settings.System.canWrite(context);
} else {
permission = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_SETTINGS) == PackageManager.PERMISSION_GRANTED;
}
if (permission) {
//do your code
}  else {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + context.getPackageName()));
context.startActivityForResult(intent, MainActivity.CODE_WRITE_SETTINGS_PERMISSION);
} else {
ActivityCompat.requestPermissions(context, new String[]{Manifest.permission.WRITE_SETTINGS}, MainActivity.CODE_WRITE_SETTINGS_PERMISSION);
}
}

Dúfam, že to pomôže