Mam ListView, który ma listę zainstalowanych aplikacji i dla każdej aplikacji, muszę wiedzieć, czy powiadomienia są włączone, czy nie. Obecnie używam poniżej kod, aby wiedzieć, czy powiadomienia są włączone:Jak sprawdzić, czy powiadomienia są włączone dla aplikacji w systemie Android?
appOpsClass = Class.forName(AppOpsManager.class.getName());
Method checkOpNoThrowMethod = appOpsClass.getMethod(CHECK_OP_NO_THROW, Integer.TYPE, Integer.TYPE, String.class);
Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);
int value = (int)opPostNotificationValue.get(Integer.class);
return ((int)checkOpNoThrowMethod.invoke(mAppOps,value, appUID, appPackage) == AppOpsManager.MODE_ALLOWED);
mam następujący wyjątek:
Spowodowany przez: java.lang.SecurityException: uid 10062 nie posiada android.permission.UPDATE_APP_OPS_STATS. W/System.err: at android.os.Parcel.readException (Parcel.java:1683) W/System.err: at android.os.Parcel.readException (Parcel.java:1636) W/System.err : w com.android.internal.app.IAppOpsService $ Stub $ Proxy.checkOperation (IAppOpsService.java:343)
podaję
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS"/>
Wciąż dostaję ten sam błąd. Korzystanie co Apis mogę uzyskać wartość, czy jest zablokowany lub nie został
Którą wersję interfejsu API używasz do tworzenia aplikacji i której wersji Android testujesz? Pytam o to, ponieważ w przypadku pewnych poufnych uprawnień w Androidzie 6 i nowszych musisz uzyskać zezwolenie od użytkowników w środowisku wykonawczym. https://developer.android.com/training/permissions/requesting.html –
Sprawdź, czy 'NotificationManager.getNotificationPolicy()' robi to za ciebie. [Link] (https://developer.android.com/reference/android/app/NotificationManager.html#getNotificationPolicy()) – sonictt1