參考http://blog.csdn.net/wdaming1986/article/details/8837023 鎖屏程序的步驟以下: 一、替換系統鎖屏 二、屏蔽Home鍵,back鍵、menu鍵 三、鎖屏程序不出如今最近任務列表中 四、屏幕喚醒時顯示鎖屏界面 1、替換系統鎖屏 調研市場絕大部分鎖屏程序,會引導用戶關閉系統鎖屏。當用戶不關閉系統鎖屏的時候咱們能夠將咱們自定義的鎖屏程序覆蓋在系統鎖屏程序上,解鎖系統鎖屏。 具體作法以下: api level 小於13時: mKeyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); mKeyguardLock =mKeyguardManager.newKeyguardLock("FxLock"); // 屏蔽手機內置的鎖屏 if (Build.VERSION.SDK_INT < 13) { mKeyguardLock.disableKeyguard(); } 大於13時,咱們設置爲自定義鎖屏界面的window添加WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD標記java
二、屏蔽Home鍵 back、menu鍵咱們能夠在onKey()函數中進行屏蔽。因爲系統安全緣由,home鍵不能使用常規方式屏蔽android
目前瞭解到的方式以下: 一、2.3如下系統 @Override public void onAttachedToWindow () { System.out.println("Page01 -->onAttachedToWindow"); this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } 二、4.0系統 static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED)api
三、4.0以上系統 彈出type爲 WindowManager.LayoutParams.TYPE_SYSTEM_ERROR 的對話框(具體原理可參考PhoneWindowManager.java)此種方式聽說在小米、魅族等系統無效(實測miui6無效,華爲手機有效)安全
以上3中解決方案均來自互聯網,實際調研發現鎖屏應用中snap效率鎖屏目前是作的比較好的。經過反編譯其代碼能夠發現其使用了第三種解決方案,而且對小米、魅族系統單獨作了適配。ide
三、鎖屏應用不出如今任務列表 這個在manifest中添加android:excludeFromRecents="true"便可函數
四、屏幕喚醒顯示自定義鎖屏 目前通用作法是啓動後臺service,在service中註冊廣播接收器(Intent.ACTION_SCREEN_ON, Intent.ACTION_SCREEN_OFF, Intent.ACTION_BOOT_COMPLETED, Intent.ACTION_CLOSE_SYSTEM_DIALOGS)ui
在收到Intent.ACTION_SCREEN_ON廣播後,啓動自定義鎖屏界面 收到Intent.ACTION_CLOSE_SYSTEM_DIALOGS廣播(長按電源鍵),隱藏type爲 WindowManager.LayoutParams.TYPE_SYSTEM_ERROR的對話框,這樣即可以顯示系統關機對話框。this