Android(安卓)应用获取通知栏权限
16lz
2021-12-04
工具类 NotificationsUtils:
package com.xxx.ua.utils;import android.annotation.SuppressLint;import android.app.AppOpsManager;import android.content.Context;import android.content.pm.ApplicationInfo;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * Created by chitty on 2017/8/3. * 获取通知栏权限是否开启 */public class NotificationsUtils { private static final String CHECK_OP_NO_THROW = "checkOpNoThrow"; private static final String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION"; @SuppressLint("NewApi") 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 = (Integer) opPostNotificationValue.get(Integer.class); return ((Integer) 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; }}
在 Activity 中适当位置调用:
if (NotificationsUtils.isNotificationEnabled(this)){ LogUtils.i(TAG, "--> showPromptDialog -- 通知权限 已开启 = "); }else { LogUtils.i(TAG, "--> showPromptDialog -- 通知权限 未开启 = "); // TODO 弹框提示用户去设置,跳转到应用信息界面 }
更多相关文章
- Android(安卓)对话框通知(Dialog Notification)
- android完全退出程序的方法
- Android(安卓)Studio 开启调试 时 提示:could not connect to rem
- Android(安卓)系统功能设置菜单 LinearLayout与relativeLayout的
- Android完全(退出)关闭应用程序
- Android开发录音和播放音频的步骤(动态获取权限)
- android 2.2 apidemos 赏析笔记 4
- Android中Manifest.xml配置文件
- Android权限【大全】