First, you need to start a background service to register a broadcastreceiver.
This broadcastreceiver is used to listen for intent. action_screen_off
In this case, intent. action_screen_off is triggered when the user locks the screen or locks the screen.
Register broadcastreceiver code in Service
Package COM. pingbao; <br/> Import android. app. keyguardmanager; <br/> Import android. app. service; <br/> Import android. app. keyguardmanager. keyguardlock; <br/> Import android. content. broadcastreceiver; <br/> Import android. content. context; <br/> Import android. content. intent; <br/> Import android. content. intentfilter; <br/> Import android. OS. ibinder; <br/> Import android. util. log; <br/> public class zyscreenservice extends Service {<br/> keyguardmanager mkeyguardmanager = NULL; <br/> private keyguardlock mkeyguardlock = NULL; <br/> @ override <br/> Public ibinder onbind (intent arg0) {<br/> // todo auto-generated method stub <br/> return NULL; <br/>}< br/> @ override <br/> Public void oncreate () <br/>{< br/> // todo auto-generated method stub </P> <p> super. oncreate (); <br/>}< br/> @ override <br/> Public void onstart (intent, int startid) <br/> {<br/> // todo auto-generated method stub <br/> log. I ("in service", "in service"); <br/> mkeyguardmanager = (keyguardmanager) getsystemservice (context. keyguard_service); <br/> mkeyguardlock = mkeyguardmanager. newkeyguardlock (""); <br/> mkeyguardlock. disablekeyguard (); <br/> log. I ("in service1", "In service1"); <br/> broadcastreceiver mmasterresetreciever = new broadcastreceiver () {<br/> Public void onreceive (context, intent) {<br/> try {<br/> intent I = new intent (); <br/> I. setflags (intent. flag_activity_new_task); <br/> I. setclass (context, zyscreensaver. class); <br/> context. startactivity (I); <br/> // finish (); <br/> log. I ("broadcastreceiver", "broadcastreceiver"); <br/>}catch (exception e) {<br/> log. I ("output:", E. tostring (); <br/>}< br/>}; <br/> registerreceiver (mmasterresetreciever, new intentfilter (<br/> intent. action_screen_off); <br/>}</P> <p >}< br/>
Then write it in the activity of the Screen Saver interface zyscreensaver we started.
Package COM. pingbao; <br/> Import android. app. activity; <br/> Import android. app. alertdialog; <br/> Import android. app. dialog; <br/> Import android. content. dialoginterface; <br/> Import android. content. intent; <br/> Import android. content. dialoginterface. onclicklistener; <br/> Import android. OS. bundle; <br/> Import android. util. log; <br/> Import android. view. keyevent; <br/> Import android. view. window; <br/> Import android. view. windowmanager; <br/> Import android. widget. arrayadapter; <br/> public class zyscreensaver extends activity {<br/> @ override <br/> Public void oncreate (bundle savedinstancestate) {<br/> super. oncreate (savedinstancestate); <br/> requestwindowfeature (window. feature_no_title); <br/> getwindow (). setflags (windowmanager. layoutparams. flag_fullscreen, <br/> windowmanager. layoutparams. flag_fullscreen); <br/> setcontentview (R. layout. main); <br/> log. I ("myscreensaver", "myscreensaver"); <br/>}< br/> Public Boolean onkeydown (INT keycode, keyevent event) {<br/> super. onkeydown (keycode, event); <br/> If (keycode = keyevent. keycode_back) {<br/> log. I ("4", "4"); <br/> showdialog (1); <br/>}< br/> // finish (); <br/> return true; <br/>}< br/> protected dialog oncreatedialog (int id) {<br/> switch (ID) {<br/> case 1: <br/> return New alertdialog. builder (zyscreensaver. this ). seticon (<br/> r. drawable. icon ). settitle ("Exit Screen Saver "). setmessage (<br/> "Exit Screen Saver "). setpositivebutton ("OK", <br/> New onclicklistener () {<br/> @ override <br/> Public void onclick (dialoginterface dialog, int which) {<br/> // todo auto-generated method stub <br/> finish (); <br/>}< br/>}) <br/>. setnegativebutton ("cancel", <br/> New onclicklistener () {<br/> @ override <br/> Public void onclick (dialoginterface dialog, int which) {<br/> // todo auto-generated method stub <br/> removedialog (1); </P> <p >}< br/> }) <br/>. create (); <br/>}< br/> return NULL; <br/>}< br/>
Then write the startup service in our main interface.
Package COM. pingbao; <br/> Import android. app. activity; <br/> Import android. content. intent; <br/> Import android. OS. bundle; <br/> Import android. util. log; <br/> Import android. view. window; <br/> Import android. view. windowmanager; <br/> public class zypingbao extends activity {<br/>/** called when the activity is first created. */<br/> @ override <br/> Public void oncreate (bundle savedinstancestate) {<br/> super. oncreate (savedinstancestate); <br/> setcontentview (R. layout. main); <br/> log. I ("pingbao", "pingbao"); <br/> intent mservice = new intent (zypingbao. this, zyscreenservice. class); // start the service <br/> mservice. addflags (intent. flag_activity_new_task); <br/> startservice (mservice); </P> <p >}< br/>}
Paste permissions in manifest
<Uses-Permission Android: Name = "android. Permission. disable_keyguard"/>
Source code download
Http://download.csdn.net/source/2996510
Another way to block the Home key is
Public void onattachedtowindow () {<br/> This. getwindow (). settype (windowmanager. layoutparams. type_keyguard); <br/> super. onattachedtowindow (); <br/>}
In this way
Public Boolean onkeydown (INT keycode, keyevent event)
The function can listen to home.
This blog is copyrighted by csdn blogger Zeng Yang
Http://blog.csdn.net/Zengyangtech/archive/2011/01/21/6157508.aspx
Reprinted please note