项目中在后台发送通知,突然某一天测出在Android 7.0上通知发送失败,那么根据提示,我们尝试加了MANAGE_USERS权限,看起来是个系统级别权限,验证后果然无效。接着在搜索后都无果,似乎大家都没遇到过,很是诡异。

从报错看可能跟系统用户有关,也许关联了什么权限没有获得。开始只能通过try/catch, 这样在前台可以收到消息。那在后台还是有问题。

开始我有几个怀疑点:

1、7.0 修改了Notification的构建方式。 但查看api更新说明,没有提及。

2、当时测出问题是在Nexus6, 从这个权限名来看 MANAGE_USERS,怀疑与系统的用户管理权限有关。

后来经过很长时间终于找到这个问题的根本原因。

首先重建一个Demo在7.0上测试一切正常,说明很有可能是我们自己工程的问题,后来发现在自定义的MyApplication有一个方法叫getUserId(), 而在Notification构建时发现竟然有一个相同的方法:

sdk 24(7.0代码):



由于这个Context 在Builder构造的时候传的是Application context, 所以很大可能就是和系统方法冲突了。

但是我又看了下,7.0以前的代码也有同样的方法,只是位置略有不同,至此还是不能解释为什么只有7.0有问题。

sdk 23:

然后我又找出手机对应的代码版本,7.0.0_r1, 有一段提交记录:



正是由于加了 callingUserId != userId 这个权限判断,才会抛出这个异常,虽然系统通知的流程我不太熟,但至此已经可以确认此问题的根本原因。

所以这个bug很巧,只有在7.0上,你的代码里有这个方法的时候才会出现。那么改法就比较简单了,修改自己的方法即可。

【原创】android 7.0 通知报错 java.lang.SecurityException: You need MANAGE_USERS permission to: check if specified user a managed profile outside your profile group的更多相关文章

  1. Android Studio 首次安装报错 Java.lang.RuntimeException:java.lang.NullPointerException...错

    下次安装报:Java.lang.RuntimeException: java.lang.NullPointerException......错 只需在文件..\Android Studio\bin\i ...

  2. 我的Android进阶之旅------>解决DownloadManager报错java.lang.SecurityException: Invalid value for visibility: 2

    1.问题描述 今天使用Android系统的DownloadManager进行下载操作时,爆了如下所示的错误: java.lang.RuntimeException: Unable to start s ...

  3. resin-pro-4.0.53报错java.lang.Error: java.lang.ClassNotFoundException: com.caucho.loader.SystemClassLoader

    最初并未发现,笔者的系统环境变量JAVA_HOME变量设置错误 D:\develop\Java\x64\jdk1.8.0_144 #最初使用了阉割版的JDK 改成完整安装的JDK就可以 D:\deve ...

  4. 我的Android进阶之旅------>Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.【转】

    本文转载自:http://blog.csdn.net/ouyang_peng/article/details/48048975 今天在调用MediaRecorder.stop(),报错了,java.l ...

  5. 【原创】大叔问题定位分享(2)spark任务一定几率报错java.lang.NoSuchFieldError: HIVE_MOVE_FILES_THREAD_COUNT

    最近用yarn cluster方式提交spark任务时,有时会报错,报错几率是40%,报错如下: 18/03/15 21:50:36 116 ERROR ApplicationMaster91: Us ...

  6. 云笔记项目- 上传文件报错"java.lang.IllegalStateException: File has been moved - cannot be read again"

    在做文件上传时,当写入上传的文件到文件时,会报错“java.lang.IllegalStateException: File has been moved - cannot be read again ...

  7. 反射报错java.lang.IllegalArgumentException: wrong number of arguments

    class Person{ private String name ; private String sex ; public Person(){ System.out.println("c ...

  8. spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext

    spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext 学习了: http ...

  9. eclipse启动报错java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' befo

    报错: java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invo ...

  10. 开着idea,死机了,关机重启。重启之后,重新打开idea报错java.lang.AssertionError:upexpected content storage modification

    开着idea,死机了,关机重启.重启之后,重新打开idea报错java.lang.AssertionError:upexpected content storage modification. goo ...

随机推荐

  1. js 判断gps是否超出设定范围

    var CKposition = { //经纬度转换成三角函数中度分表形式 rad: function (d) { return d * Math.PI / 180.0; }, // 根据经纬度计算距 ...

  2. 个人常用的win7快捷键

    1.Win + D – 显示桌面 2.Win+L    锁定系统 3.Win + R – 打开运行窗口 4.Win+M     最小化所有窗口      当按下后当前所有窗口全都最小化.再次按下这个组 ...

  3. Java项目引入第三方Jar包

    普通java Project 引入jar包: 1,copy jar to lib folder. 2, imported with Build path -> Add external jars ...

  4. K8S informer机制

    一.informer介绍 Kubernetes基于声明式API的设计理念,所谓声明式API,即告诉Kubernetes Controller资源对象的期望状态,这样为Kubernetes在事件通知后, ...

  5. 删除File Explorer、This PC、Folders

    win+R,输入regedit,打开Registry Editor 定位:Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentV ...

  6. 利用Comparator对枚举类型进行排序的实现

    1. 利用BeanComparator对List<Object>根据属性进行排序 String daXiaoOrder[] = {"很小","小", ...

  7. laravel qq第三方登录

    QQ互联官网 首先申请成为开发者获取到后面需要的 client_id redirect_uri client_secret 文档资料/SDK及资源下载/SDK下载/PHP SDK 下载下来修改文件修改 ...

  8. 暑假学习二 8.24 Hadoop的环境配置

    今日学习内容: 主要为Hadoop的环境配置,相关配置所需文档可以留言(?)会给发送 1.hadoop介绍: 狭义: 核心组件,Hadoop hdfs  分布存储 yarn   资源管理和任务调度框架 ...

  9. Mac 下的虚拟机Parallels_Desktop_15

    Mac 下的虚拟机Parallels_Desktop_15 1,取得 Mac Parallels_Desktop_15.dmg 后挂载,密码:7410   2,点关闭!关闭!关闭!,千万不要点&quo ...

  10. ios唤起键盘后,页面不收回导致元素错位的问题.(譬如固定在底部的自定义键盘等)

    解决办法 var u = navigator.userAgent; var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 // ...