android中重设锁屏密码
开发当中(针对模拟器)或者使用手机(android版的手机)时,有时候会忘记锁屏的密码,那怎么办呢?
方案有二:(我这里主要是针对开发人员来考虑的(既针对修改源码的方式)):
方案一:
禁掉锁屏界面的显示,既(在开启模拟器或者手机的时候,既launcher启动之后出现的那个锁屏界面)。然后再进入系统设置界面进行重新设置密码,可是当我们进入系统设置界面的时候系统又会弹出一个解锁的密码要我们再次的输入锁屏密码进行确认。那要该怎么办呢,呵,当然是修改源码了。
具体步骤如下:
1. 禁掉启动之后出现的那个锁屏界面,既禁掉~/android2.3/frameworks/base/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java类中的handleShow()方法。重新编译之后再启动就不会出现锁屏的界面了,这样我们就可以进入主页面进行操作了。
2.让设置界面出现的那个锁屏重设密码界面永远通过。既,让这里的密码校验成立,修改~/android2.3/packages/apps/Settings/src/com/android/settings/ConfirmLockPattern.java类中的onPatternDetected()方法.
public void onPatternDetected(List<LockPatternView.Cell> pattern) { if (mLockPatternUtils.checkPattern(pattern)) { setResult(RESULT_OK); finish(); } else { if (pattern.size() >= LockPatternUtils.MIN_PATTERN_REGISTER_FAIL && ++mNumWrongConfirmAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT) { long deadline = mLockPatternUtils.setLockoutAttemptDeadline(); handleAttemptLockout(deadline); } else { updateStage(Stage.NeedToUnlockWrong); postClearPatternRunnable(); } } } 既,只要让mLockPatternUtils.checkPattern(pattern)判断条件为ture就OK拉,然后重新编译,启动模拟器或手机,进入设置界面进行重设密码了。
方案二:
既、重新生成一个gesture.key或password.key等,这个文件是根据你设置密码类型来生成的(有九宫格图案/密码/PIN类型),文件导入到模拟器中覆盖原来的这样的密码文件就可以拉。那怎么样才能重新生成这个.key文件呢,我这里就以图案密码类型为例说一下吧,具体如下:
查看系统源码就知道了系统是怎么样进行图案密码保存的,源码如下:
private static byte[] patternToHash(List<LockPatternView.Cell> pattern) { if (pattern == null) { return null; } final int patternSize = pattern.size(); byte[] res = new byte[patternSize]; for (int i = 0; i < patternSize; i++) { LockPatternView.Cell cell = pattern.get(i); res[i] = (byte) (cell.getRow() * 3 + cell.getColumn()); } try { MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] hash = md.digest(res); return hash; } catch (NoSuchAlgorithmException nsa) { return res; } }
LockPatternView.Cell的源码:
public static class Cell { int row; int column; // keep # objects limited to 9 static Cell[][] sCells = new Cell[3][3]; static { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { sCells[i][j] = new Cell(i, j); } } } /** * @param row The row of the cell. * @param column The column of the cell. */ private Cell(int row, int column) { checkRange(row, column); this.row = row; this.column = column; } public int getRow() { return row; } public int getColumn() { return column; } ...... }
哦,大家应该有所理解了吧,原来系统是把每一个格子(cell)看似成一个二维的数组中对应的值。然后把cell保存在一个list里面,但限制最大个数为9个,注意:不是说密码只有9种,因为密码设置是根据我们画的路线有关,所以有很多种。然后再把每一个cell转换成byte型的数组。接着再用SHA-1方式进行了加密。
到这里我相应大家应该清楚了吧,只要我们自己定义一个二维数组。二维数组里面保存我们自己想要设置密码,然后把这个通过上面的那种方式进行加密生成一个.key的文件就OK了。然后把这个导入模拟器中替换原来的密码文件,OK,密码已成功修改了,大功告成。呵呵,第一次发表微薄,有什么写的不对的地方,还请各位原谅和请教,希望可以帮助到有这方面之需的人。
android中重设锁屏密码相关推荐
- android修改锁屏密码,Android修改、设置锁屏密码
在实现锁屏功能的时候首先要获得管理员权限,然后通过用户授权,用户如果同意授权,则就可以修改或设置锁屏密码. 具体方法如下: 1,首先要新建一个DeviceAdminReceiver的子类 import ...
- android 监听锁屏 权限,Android中监听锁屏变化和防止锁屏
Android app中可能存在某些可视化耗时操作,需要防止锁屏. 一.监听锁屏 添加权限 首先来看如何监听锁屏,使用BroadcastReceivercaset来监听 1.锁屏监听 public c ...
- android形状属性、锁屏密码、动态模糊、kotlin项目、抖音动画、记账app、视频播放器等源码
Android精选源码 直观了解Android的"形状"属性如何影响Drawable的外观. 一个灵活的视频播放器, 可替换播放器内核. android锁屏输入密码功能源码 背景动 ...
- android锁屏密码文件夹,深入理解Android M 锁屏密码存储方式
Android M 之前锁屏密码的存储 在 Android M 之前,锁屏密码的存储格式很简单,其使用了 64 位随机数作为 salt 值,此 salt 值被存储在 sqlite 数据库 /data/ ...
- 破解android锁屏密码
android的锁屏密码大家应该都不陌生,本文所讲的即是对此密码的破解方法. 适合平台:android 所需条件:已root,打开USB调试. 意义:几乎没用. android的锁屏密码是连接一个3* ...
- java修改手机锁屏密码,深入理解Android M 锁屏密码存储方式
Android M 之前锁屏密码的存储 在 Android M 之前,锁屏密码的存储格式很简单,其使用了 64 位随机数作为 salt 值,此 salt 值被存储在 SQLite 数据库 /data/ ...
- Android 声音分贝控制锁屏demo实现
标题demo实现总体逻辑: 1. 声明权限 2. 声明,注册 receiver,接收注册设别管理器结果 3. 完成注册APP为设备管理器 4. 录音权限申请 5. 编写类文件,实现业务逻辑 OK,我们 ...
- Android11.0(R) 预留清空锁屏密码接口
前言 出厂的设备有些客户喜欢设置锁屏密码,无奈记性不好,忘记密码后就只能恢复出厂或者重新刷机了,啊这客户肯定不接受的. 为了防止客户逼逼赖赖,我们就未雨绸缪,给它加个清除接口. 先说结论,系统锁屏密码 ...
- 电脑桌面云便签怎么设置锁屏密码?
一.打开已登录的电脑桌面云便签: 二.直接点击顶部的用户头像,或者点击云便签界面右上角的"设置">"设置"选项,也可以在便签界面按下默认快捷键Alt+Z, ...
最新文章
- A股暴跌,户均亏2万!刚写好的辞职信又撕了……
- TI-BLE协议栈的GATT
- long mode 分页_x86 系列 CPU 内存寻址模式总结
- 计算机二级考试c语言冲刺,计算机二级C语言考试冲刺练习题
- 去除android控件滑动的时候出现的阴影
- ESFramework Demo -- P2P通信Demo(附源码)
- 《Java并发编程实践》学习笔记之二:线程安全性(thread-safe)
- IBM公布未来5年将改变人类生活的五大科技
- OpenStack 认证服务 KeyStone部署(三)
- docker 下使用 Hyperf(win10)
- 《生物信息学》阅读笔记 (一):生物信息学的概念及发展历史
- 《传统相声开场小唱》
- Go操作MySQL数据库库
- Android memery data sample
- uiautomatorviewer 简单使用
- 移动APP测试经验总结
- 用JavaScript获取一年的天数
- 如何获取AK/SK?(IAM用户)
- 银行卡收单____对账__单边账
- 嫉妒(译本)--- 作者:弗兰西斯•培根
热门文章
- 银行从业资格证是必考的嘛
- 《大数据时代》作者维克托·迈尔-舍恩伯格:爆发式创新 云中大数据如何赋能下一轮经济增长...
- Android第三方登陆之QQ篇(原生登陆授权)
- 前端常用的JavaScript代码函数-正则篇
- android 贴纸 源码,超简单集成HMS ML Kit 人脸检测实现可爱贴纸
- android 小插件下载地址,万能小组件小部件
- 生产者/消费者设计模式(转载)
- linux监控工具supervise的使用
- eds800变频器故障代码_变频器故障代码
- android xml黑体字_Android开发之字体设置