У меня есть ListView, который имеет список установленных приложений и для каждого приложения, мне нужно знать, включены ли уведомления или нет. В настоящее время я использую ниже код, чтобы узнать, включены ли уведомления:
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);
Я получил следующее исключение:
Вызвано: java.lang.SecurityException: uid 10062 не имеет 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: at com.android.internal.app.IAppOpsService $Stub $Proxy.checkOperation(IAppOpsService.java:343)
Я включил
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS"/>
Тем не менее, я получаю ту же ошибку. С помощью какого apis можно получить значение, заблокировано или нет.