¿Cómo saber si las notificaciones están habilitadas o no para una aplicación en Android?

Tengo un ListView que tiene la lista de aplicaciones instaladas y para cada aplicación, necesito saber si las notificaciones están habilitadas o no. Actualmente estoy usando el siguiente código para saber si las notificaciones están habilitadas:

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

Tengo la siguiente excepción:

Causado por: java.lang.SecurityException: uid 10062 no tiene android.permission.UPDATE_APP_OPS_STATS. W / System.err: en android.os.Parcel.readException (Parcel.java:1683) W / System.err: en android.os.Parcel.readException (Parcel.java:1636) W / System.err: en com .android.internal.app.IAppOpsService $ Stub $ Proxy.checkOperation (IAppOpsService.java:343)

He incluido

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

Aún así obtengo el mismo error. Usando qué apis puedo obtener el valor si está bloqueado o no

Respuestas a la pregunta(2)

Su respuesta a la pregunta