Woher wissen, ob Benachrichtigungen für eine Anwendung in Android aktiviert sind oder nicht?

Ich habe eine ListView, die eine Liste der installierten Anwendungen enthält, und für jede Anwendung muss ich wissen, ob die Benachrichtigungen aktiviert sind oder nicht. Derzeit verwende ich den folgenden Code, um festzustellen, ob die Benachrichtigungen aktiviert sind:

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);

Ich habe die folgende Ausnahme:

Verursacht durch: java.lang.SecurityException: uid 10062 hat keine 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)

Ich habe @ enthalt

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

Trotzdem bekomme ich den gleichen Fehler. Mit welchen APIs kann ich den Wert erhalten, ob es gesperrt ist oder nicht?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage