华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用

先说场景:
采购了一批华为的pad(android 7.0.0),每次开机都有锁屏壁纸,所以可以在开发者选项中的锁屏选项中关闭该功能。但部分设备的该选项是灰色的无法操作(具体原因不明),根据网络上说的清凭证,设密码都无效。所以花了些时间研究,记录一下思路。
前提是设备root了或者有系统权限,以下是设备root的情况处理:

1. 首先我对比了其他的设备,在开发者选项中未看到【锁屏】选项,以为这是华为自己定制的功能,由于没有源码。所以反编译了Settings.apk,其实这一步走了弯路,但还是记录一下,以下是我反编译的步骤:

1.执行命令获取Setting软件包安装信息

adb shell
dumpsys package com.android.settings

结果如下
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第1张图片
2.执行命令pull安装包,通过apkTool工具反编译发现Settings.apk里面没有代码,所以拉取了.odex文件,然后转成.dex,最后使用apkTool查看

adb pull /system/priv-app/Settings/oat/arm64/Settings.odex

拉取后将.odex转成.dex文件,将Settings.odex拖到fetchOdex.bat打开,稍等片刻即可生成.dex文件,文件在文末一并提供
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第2张图片

2. 反编了源码发现下面的配置:

华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第3张图片
当通过命令执行:

adb shell
su
setprop persist.sys.cc_mode 1
reboot

重启后发现也没有【锁屏】选项,但问题依然没有解决,只能还原找其他的原因!
通过一番查找,最终定位到以下代码(查找的过程就省略了,如果感兴趣可以再讨论)
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第4张图片
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第5张图片
最终的切入点就是LockPatternUtils.java
通过源码查看工具定位
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第6张图片
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第7张图片
根据setBoolean一步步最终定位到
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第8张图片
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第9张图片
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第10张图片
**
基本可以确定整个setLockScreenDisabled()流程就是向locksettings.db数据库的locksettings表写入lockscreen.disabled字段。
**
既然有root权限,则直接拉库改表即可,该数据库的位置在data/system目录下,以下是我修改过后的样子
华为开发者选项锁屏已被管理员、加密政策或凭据存储禁用_第11张图片
最后一步就是push操作,以防万无一失,还是删除设备中的locksettings.db相关文件再push操作

adb shell
su
chmod 777 data/system/locksettings.db
reboot

重启见奇效!

附件apkTool工具:
链接:https://pan.baidu.com/s/1zbOv6mv9Ol9xAAaGJxm94Q
提取码:ngf8
源码查看工具:
http://androidxref.com/

你可能感兴趣的:(android,华为,android,java)