2016-05-31 47 views

回答

0

你必须的.java类通知是否已启用或没有 我张贴参考Java代码检查通知是否启用与否

public class NotificationsUtils { 
private static final String CHECK_OP_NO_THROW = "checkOpNoThrow"; 
private static final String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION"; 
public static boolean isNotificationEnabled(Context context) { 

    AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); 

    ApplicationInfo appInfo = context.getApplicationInfo(); 

    String pkg = context.getApplicationContext().getPackageName(); 

    int uid = appInfo.uid; 

    Class appOpsClass = null; /* Context.APP_OPS_MANAGER */ 

    try { 

     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, uid, pkg) == AppOpsManager.MODE_ALLOWED); 

    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (NoSuchMethodException e) { 
     e.printStackTrace(); 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 
} 
+0

谢谢杰克。但我没有使用android sdk。这是一个手机应用程序。是否有解释GCM服务器响应的方法来知道通知是否已发送到通知已被禁用的设备? – nexus

+0

但您可以通过cordova自定义插件调用本机功能,并且可以检查此 –

+0

我已关闭设备上的通知以关闭我的应用。现在,当我向该设备发送推送通知时,GCM服务器将其报告为成功。 是否有解释GCM服务器响应的方法,以了解是否已将通知发送到通知已禁用的设备? – nexus

相关问题