标 题: Android无视屏幕解锁保护界面
作 者: backtract
链 接:http://my.oschina.net/backtract/blog/133644

Android存在三种屏幕解锁保护:图案解锁、PIN密码解锁和密码解锁。

我们可以使用java.lang.Object.android.app.KeyguardManger中的子类KeyguardLock可以控制Disable掉这些屏幕锁界面,从而达到不用输入密码,直接过掉屏幕锁界面来使用手机

主要使用KeyguardLock.disableKeyguard()和KeyguardLock.enableKeyguard()方法来Disable、enable屏幕锁界面

代码如下:

BootBroadcastReceiver.java 开机启动广播接收者调用PhoneListenService服务

package cn.itcast.phone;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class BootBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Intent service = new Intent(context, PhoneListenService.class);context.startService(service);}}

PhoneListenService.java 服务

package cn.itcast.phone;import android.app.KeyguardManager;import android.app.KeyguardManager.KeyguardLock;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.util.Log;public class PhoneListenService extends Service {private static final String TAG = "PhoneListenService";@Overridepublic void onCreate() {//获取KeyguardManagerKeyguardManager manager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);if (manager.inKeyguardRestrictedInputMode()) {Log.i(TAG, "come in...");// 处于锁定界面,界面则通过KeyguardLock类方法来解锁//KeyguardLock keyguard = manager.newKeyguardLock("KeyguardLock");KeyguardLock keyguard = manager.newKeyguardLock(this.getClass().getName());keyguard.disableKeyguard();}Log.i(TAG, "service created");}@Overridepublic void onDestroy() {Log.i(TAG, "service destroy!");}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}}
AndroidManifest.xml


<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="cn.itcast.phone"    android:versionCode="1"    android:versionName="1.0" >    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >                <service android:name=".PhoneListenService" /><receiver android:name=".BootBroadcastReceiver"><intent-filter>         <action android:name="android.intent.action.BOOT_COMPLETED"/>       </intent-filter></receiver>            </application>    <uses-sdk android:minSdkVersion="8" />     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> </manifest>

由于屏幕锁定时通过电脑上豌豆荚等软件只能安装Apk,并不能启动apk,所以此Demo程序写成了开机启动,即当屏幕锁屏时,通过电脑豌豆荚等软件安装此软件后重启即可实现Pass掉屏幕锁界面。

Android 2.2,2.3,4.0平台测试通过。

参考: http://www.wooyun.org/bugs/wooyun-2010-09978


更多相关文章

  1. android游戏引擎andengine学习系列二:简单的例子
  2. 取消程序在最近六项中显示以及直接调用信息短信界面
  3. Android(安卓)如何实现欢迎界面(Splash Screen)
  4. android 5 设置图案锁,锁屏界面进入相机拍照、查看锁定的照片后,退
  5. Android(安卓)6.0动态权限及跳转GPS设置界面
  6. 显示界面的时候直接获取到EditText焦点弹出键盘
  7. Android邪门歪道
  8. Android从网络中获得一张图片并显示在屏幕上的实例详解
  9. Android(安卓)干货App开发总结

随机推荐

  1. MYSQL实现排名及查询指定用户排名功能(并
  2. mysql如何利用binlog进行数据恢复详解
  3. MySQL8.0安装中遇到的3个小错误总结
  4. Mysql常用基准测试命令总结
  5. 关于Mysql通用查询日志和慢查询日志分析
  6. 你的like语句为什么没索引详解
  7. MySQL高效导入多个.sql文件方法详解
  8. MySQL中的排序函数field()实例详解
  9. PHP定时备份MySQL与mysqldump语法参数详
  10. 定时备份 Mysql并上传到七牛的方法