您的位置:首页 > 移动开发 > Android开发

Android 的锁屏画面 居然可以无需密码就解除?我凌乱了。

2015-05-27 00:00 330 查看
摘要: 做个memo。
偶然发现Android App可以自己解除锁屏画面,哪怕是有密码的,当然,前提是要把这个App启动起来。

Source & APK, 摘要:

wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
ghostView = new View(this);
lp = new LayoutParams();
lp.type = LayoutParams.TYPE_SYSTEM_ERROR;
lp.width = 0;
lp.height = 0;
lp.flags = 0;
lp.flags |= LayoutParams.FLAG_NOT_FOCUSABLE;
lp.flags |= LayoutParams.FLAG_NOT_TOUCHABLE;
lp.flags |= LayoutParams.FLAG_SHOW_WHEN_LOCKED;
lp.flags |= LayoutParams.FLAG_TURN_SCREEN_ON;
lp.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
lp.flags |= LayoutParams.FLAG_DISMISS_KEYGUARD;

wm.addView(ghostView, lp);  //这是做了一个最顶层的悬浮无焦点的幽灵窗口,迫使开亮屏幕。

keyGuardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
keyGuardLock = keyGuardManager.newKeyguardLock(getPackageName());
keyGuardLock.disableKeyguard();  //缺了这个就不能解锁了。

安装了之后就可以启动service
adb shell pm start asc.tool.passwordforgotunlocker/. PasswordForgotUnlockerService --user 0

这就可以挪走密码锁定屏幕了,然后可以任意操作app,除了一点:不能按HOME按钮。当然,可以通过BACK键退回到Home画面,然后启动任何app都行。

贴两幅图,按图中的"ON+Unlock"就可以解锁。 (本身这个Sample是没有画面的,这是贴的另一个使用了这里介绍的技术的东西)





于是我就想着,设法让这个app一旦安装就自动执行,那 发布这个app到play store上,然后从PC的play store网页里向android device安装(前提是device里加入了相同的goole account),这样岂不是就可以解锁了?有点荒唐?

验证了一下,发现以前2.3时代能够静态登陆的Broadcast Event Receiver方式不管用了,
例如子AndroidManifest.xml里加入

<receiver android:name="asc.tool.passwordforgotunlocker.MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.SCREEN_ON" />
<action android:name="android.intent.action.TIME_TICK" />
</intent-filter>
</receiver>


都不行了,有人验证过后两个event非得手动通过执行registerReiver api来注册,但是第一个BOOT_COMPLETED居然也不行,我很惊讶,难道google特意这样?这个app是没有任何luancher icon的,安装完了也不会在HOME里有任何显示。没兴趣研究了。

更新:Android 5.0开始不能这样绕过密码输入了。
---------------------------------------------------------------------------------------------------

顺便发现在Play store里有个Android Device Manager早就做了这些了,还不止,还可以定位,振铃,删除数据。开始像是偷偷做的,因为Android 2.3位置,都没有明确的设定告诉用户有这些功能和提供选项。Android 4.x开始 好歹提供了一个Google Settings的app让人知道有这么个东西在起作用。稍微看了一下,发现这些功能似乎来自于系统内置的Android Developer Service里?

条件(方法):在Android手机里的Account设定里,加入一个google account(其实就是一个gmail地址就可以了。然后用这个gmail进入play store,到设定画面,执行Device Manager就可以。

当手机找不到的时候可以用这个。甚至可以在一台手机上安装一个Android Device Manager App来寻找另一台。

详细的请看 How to use Android Device Manager - AndroidPIT





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android Unlock