开机向导到联网状态,一直失败问题 分析

问题现象:开机向导到联网状态,一直失败,查看log输出,如下信息:

2-31 20:35:15.312 3722 3722 E AndroidRuntime: Caused by: java.lang.SecurityException: NetworkScoreService: Neither user 10044 nor current process has android.permission.REQUEST_NETWORK_SCORES.

12-31 20:35:15.312 3722 3722 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:2004)

也就是开机向导没有REQUEST_NETWORK_SCORES这个权限,导致问题产生。

我们在framework/base/core/res 下面,打开

AndroidManifest.xml

搜索可以看到:

我们知道,GMS是不能用系统签名的,于是只能是setup了。而这里的setup是什么意思呢?

完整的讲解在

https://blog.csdn.net/u013553529/article/details/53167072

这些数值,对应的源码位置在PermissionInfo.java文件:

于是关键搜索就是PROTECTION_FLAG_SETUP 这个值了。

搜索出来,定位到PackageManagerService.java 文件

grantSignaturePermission方法里面

这里发现,关键信息是包名 和 mSetupWizardPackage 进行比对了,那么我们就去看看这个mSetupWizardPackage值从哪来的?

继续去看:

然后我们发现,这里有个逻辑判定:

matches.size() == 1 ,也就是只有为1时候,才会赋值,于是我们定位就转为,找下手机是否有多个开机向导了。如果有多个,也就可以定位问题点了。

那么我们再次看一个信息:

连接手机,使用

adb shell dumpsys package permission android.permission.REQUEST_NETWORK_SCORES

使用此命令,将此权限的信息打印出来。

这里就能看到,这个权限是谁提供的, android

权限信息:signature|setup

然后只是每个申请此权限的apk,以及是否允许状态。

这里granted=true 表示已经授权。

使用adb shell dumpsys package com.google.android.setupwizard 进行查看开机向导授权信息:

正常情况下有一行

异常时候没有这一行,也就代表没有授权。

然后使用

adb shell dumpsys package -f 打印出所有intent信息

搜索 开机向导的intent:android.intent.category.SETUP_WIZARD

发现有两个包处理这个:

com.google.android.setupwizard

com.android.provision

问题定位,删掉com.android.provision解决。

关于解析apk的androidManifest.xml 流程,这里权限的解析在:

PackageParser.java文件的

这里,然后代码中关联的就是PermissionInfo.java的一系列值。更详细的流程

https://blog.csdn.net/qq_23547831/article/details/51203482

------------------

这次推荐一个AI公众号,希望大家能够学习,有所收获。

AI极客研修站

「AI极客研修站」分享AI知识,由浅入深,坚持原创。从理论到实践,使用Python语言,带你领略神奇的人工智能世界。想入门或者学习人工智能方面的童鞋一定不要错过啦!

原文发布于微信公众号 - 代码GG之家(code_gg_home)

原文发表时间:2018-04-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux驱动个人学习

Linux各种版本

 1.1   Fedora Core和Fedora     一开始总搞不清楚 Fedora Core和Fedora有什么关系?有什么不同,现在终于明白了,自从F...

4214
来自专栏Java进阶干货

成为一名Java高级架构师你应该要学习的技术

2093
来自专栏云计算

现代网络负载平衡和代理介绍

原文地址:https://blog.envoyproxy.io/introduction-to-modern-network-load-balancing-an...

3444
来自专栏杨建荣的学习笔记

Oracle闪回原理测试(三)(r12笔记第16天)

对于Oracle的闪回,很多朋友也问过问,到底是怎么玩的?如果自己做过一些闪回数据库的操作,就会发现这个功能非常强悍。 Flashback DML的操作...

3275
来自专栏FreeBuf

安全应急响应工具年末大放送

为了帮助安全分析师更好的完成工作,小编整理了一些现在比较流行的安全应急响应工具和资源,从磁盘镜像创建工具、内存分析工具到内存镜像工具、沙盒/逆向工具等,相信总有...

4006
来自专栏崔庆才的专栏

你的 Mac 用对了吗?推荐一些 Mac 上比较好用的软件

最近有一个朋友刚入手了 Mac,准备专门搞开发用,让我给他推荐几款软件,然后我就把我的 Launchpad 截图发给了他,他看到这密密麻麻的软件完全不知所措,如...

3350
来自专栏FreeBuf

中国烧鹅系列:利用烧鹅自动获得反弹SHELL

烧鹅是RadioWar基于Teensy++ 2.0 AT90USB1286芯片设计的USB Rubber Ducky类开发板,外观看起来很像USB Rubber...

23310
来自专栏java系列博客

java面试要点

1573
来自专栏菩提树下的杨过

“单播”、“组播”和“多播”

摘自"百度知道",我不知道! 当前的网络中有三种通讯模式:单播、广播、组播(多播),其中的组播出现时间最晚但同时具备单播和广播的优点,最具有发展前景。 一、单...

3355
来自专栏java工会

Java程序员新手老手都离不开八大开发工具

现在有很多库、实用工具和程序任Java开发人员选择。每个工具都有其优点,但其中有一些因它的知名度、多功能性和有效性从众多选项中脱颖而出。 以下这8个工具,从代码...

1712

扫码关注云+社区