我有一個列表視圖,其中有已安裝的應用程序列表和每個應用程序,我需要知道是否啓用通知。 目前我使用下面的代碼知道,如果啓用通知:如何知道是否爲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);
我有以下異常: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 :在com.android.internal.app.IAppOpsService $存根$ Proxy.checkOperation(IAppOpsService.java:343)
我已經包括
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS"/>
不過我得到了同樣的錯誤。 使用哪些API可我得到()是否被阻塞的價值或不
您使用哪個API版本來構建應用程序,以及測試您的應用程序的是哪個Android版本?我問這是因爲對於Android 6及以上版本中的某些敏感權限,您需要在運行時獲得用戶的許可。 https://developer.android.com/training/permissions/requesting.html –
看看'NotificationManager.getNotificationPolicy()'是否適合你。 [Link](https://developer.android.com/reference/android/app/NotificationManager.html#getNotificationPolicy()) – sonictt1