关于这个版本8.0以上获取通知栏状态 大部分手机都ok的 主要是国产的OPPO vivo 怎么拿都是true 下面的方法是找了好久的综合解决版本  终于成功搞掉了vivo和OPPO

public static boolean isNotificationEnabled(Context context) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

NotificationManager manager = (NotificationManager)context. getSystemService(NOTIFICATION_SERVICE);

NotificationChannel channel = manager.getNotificationChannel(ANDROID_CHANNEL_ID);

if (channel != null){

/**

* 这里是应用总通知开关已经打开 但是你注册的单个通知开关关闭了

*/

if (channel.getImportance() == NotificationManager.IMPORTANCE_NONE) {

return false;

}else {

try {

/**

* 这是应用总通知开关关闭了

*/

ApplicationInfo appInfo = context.getApplicationInfo();

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

int uid = appInfo.uid;

NotificationManager notificationManager = (NotificationManager)

context.getSystemService(Context.NOTIFICATION_SERVICE);

Method sServiceField = notificationManager.getClass().getDeclaredMethod("getService");

sServiceField.setAccessible(true);

Object sService = sServiceField.invoke(notificationManager);

Method method = sService.getClass().getDeclaredMethod("areNotificationsEnabledForPackage"

, String.class, Integer.TYPE);

method.setAccessible(true);

return (boolean) method.invoke(sService, pkg, uid);

} catch (Exception e) {

return true;

}

}

}else {

return true;

}

}else {

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;

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

int invoke = (int) checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg);

return (invoke == 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;

}

}

android 8.0获取通知权限,Android8.0通知权限适配相关推荐

  1. 华为android_19,荣耀再增4款支持EMUI8.0机型 华为支持Android8.0设备增致19款

    原标题:荣耀再增4款支持EMUI8.0机型 华为支持Android8.0设备增致19款 继此前,华为宣布,旗下(包括华为.荣耀)有15款机型已经预装或未来将支持基于Android8.0的EMUI8.0 ...

  2. android烤机按键变慢,Android8.0平台Camera monkey拷机卡死异常

    Android8.0平台Camera monkey拷机卡死异常 最近在处理一个camera monkey拷机卡死的问题,卡死在停止录像的画面. monkey测试命令 monkey -p com.and ...

  3. android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题

    小菜在适配 Android8.0 过程中,遇到很多问题,有很多很常见的问题,今天来整理一下页面跳转时黑屏的问题. 问题猜测 猜测一: 显示 Activity 页面之前会优先开启一个 Starting ...

  4. 华为android版本6.0,华为可升级Android8.0|EMUI6.0名单曝光,近20款,小米该加油了...

    原标题:华为可升级Android8.0|EMUI6.0名单曝光,近20款,小米该加油了 从谷歌正式发布Android8.0至今也有一个半月多了,对于能升级的三星.索尼.HTC等手机曝光不断,让国内的安 ...

  5. android百度地图 okhttp,阳光沙滩-Android8.0用OkHttp3报错,而andoird9.0和10.0不报错

    仅管报错,但程序仍然能正常运行. 用红线标出来的是它认为有错的地方 2020-03-14 12:33:18.747 5759-5759/com.cxb.webshop I/zygote: Reject ...

  6. android打开本地音乐播放器,Android8.0打开手机所有的音乐播放器

    上篇文章录取的电话音频,这是用来读取播放方法 //path 文件路径 public void play(String path) { Intent intent = new Intent(Intent ...

  7. Android8.0未知来源应用安装权限

    Android8.0未知来源应用安装权限 Android8.0的诸多新特性中有一个非常重要的特性:未知来源应用权限(危险权限) android6.0到android8.0之前安装未知来源应用的时候一般 ...

  8. Android 开发 之 8.0应用安装权限(未知应用权限安装)

    未知来源应用权限 Android8.0的诸多新特性中有一个非常重要的特性:未知来源应用权限 以前安装未知来源应用的时候一般会弹出一个弹窗让用户去设置允许还是拒绝,并且设置为允许之后,所有的未知来源的应 ...

  9. Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...

    老罗版本参见:https://blog.csdn.net/luoshengyang/article/details/6573809 在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简 ...

  10. 华为android贡献度,Android8.0系统占比大幅提升,华为、荣耀、小米成为主要贡献...

    原标题:Android8.0系统占比大幅提升,华为.荣耀.小米成为主要贡献 安卓推出Android8.0系统至今已半年有余,如今Android8.1稳定版.Android9.0开发者预览版也发布了,但 ...

最新文章

  1. CentOS 部署 flask项目
  2. python 三种聚类算法(K-means,AGNES,DBScan)
  3. Spring Sleuth和Zipkin跟踪微服务
  4. Web服务器安全设置
  5. php 正则第一个,为什么这个正则表达式与php中的第一个结果不匹配?
  6. Leet Code OJ 242. Valid Anagram [Difficulty: Easy]
  7. python读取文件夹下所有图像 预处理_Tensorflow之tif图像文件预处理
  8. 【webGL入门2】点线面的绘制
  9. java web filter 之一 基础实现
  10. 打印文件前,千万记得把弹窗叉掉!!!
  11. 2018年编程语言排行榜_这是2018年学习的最佳编程语言
  12. c#如何生成Excel(.xls和.xlsx)文件
  13. mysql时间10位数字_mysql—MySQL数据库中10位时间戳转换为标准时间后,如何对标准时间进行加减X天处理...
  14. 行为型模型 中介者模式
  15. kindeditor 编辑器手机访问默认为HTML编辑
  16. VC操作Word书签模板
  17. 很多网友问那个磁力搜索站好用,就由本君说说吧!
  18. 网页的背景颜色变化效果
  19. 和菜鸟一起学android4.0.3源码之硬件gps简单移植
  20. word无法验证服务器,Office提示“无法验证此应用程序的许可证”时怎么处理?...

热门文章

  1. 最新Spring下载网址
  2. 路由模块router实现step1
  3. 用scanf函数输入数据,字符数据的输入输出
  4. 在Javascript中,获取到数字超出长度问题
  5. MAC系统上,软件安装后的目录
  6. MAC编译OpenJDK8:clang: error: include path for libstdc++ headers not found(独家解决办法)
  7. msys2编译ffmpeg:ERROR: libx264 not found
  8. 全网首发:怎样加快android doubango的编译速度?
  9. 从离职之日起,一年内仲裁
  10. VS编译NPAPI:error C2733:不允许重载函数 “NP_Initialize的第二个参数