Android 鎖屏記錄

2021-06-21 07:52:57 字數 1055 閱讀 9962

先給大家看段對碼:

mkeyguard = (keyguardmanager) getsystemservice(context.keyguard_service);

mkeylock = mkeyguard.newkeyguardlock("");

mkeylock.disablekeyguard();

做過系統鎖屏服務程式的童靴對這段**應該不會陌生了,他的作用就是關閉系統自帶的鎖屏服務。

現在的問題是在自己定製好鎖屏服務後,載入apk、開啟服務,然後按home鍵後再鎖屏時,是不是出現bug,發現disablekeyguard失效,仍出現系統的鎖屏。

現在對disablekeyguard方法進行分析:

在api中disablekeyguard()的介紹是

disablekeyguard():disable the keyguard from showing.

需要許可權android.permission.disable_keyguard

很多文件中對這個方法的補充介紹和翻譯都是「通過disablekeyguard()函式來解除鎖屏,通過來reenablekeyguard()反解除鎖屏.reenablekeyguard()反解除鎖屏的意思是:如果在呼叫disablekeyguard()函式之前是鎖屏的,那麼就進行鎖屏,否則不進行任何操作。當然如果之前沒呼叫disablekeyguard()函式,也不進行任何操作。」

後來又看了很多發布了原始碼的鎖屏程式都出現在上面所說的home鍵問題,然自己對**進行反覆修改除錯終於找出原因所在。網上的程式都是在服務中的接收螢幕開啟或關閉的廣播接收器裡呼叫disablekeyguard方法,即每次接收到螢幕開啟或關閉廣播時呼叫disablekeyguard方法,把disablekeyguard方法當作關閉此次系統鎖屏使用,而實際上disablekeyguard方法的作用是關閉掉了系統鎖屏服務,只需要呼叫一次就行了,呼叫多次反而出現問題(還會造成關於關閉定製鎖屏、恢復系統鎖屏服務功能的bug)。

所以我在服務啟動的時候呼叫disablekeyguard方法,關閉服務(即恢復系統鎖屏服務時)呼叫reenablekeyguard方法,讓他們成對呼叫……發現bug解除。

Android 鎖屏問題

android鎖屏 android鎖屏時,1.會首先呼叫onpause 所以應該儲存應用程式的資源。2.android解鎖的時候,會呼叫onresume,讀入儲存的應用程式的資源。如果執行程式是已經鎖屏,1.應用程式會先呼叫oncreate 然後onresume 再則onpause 2.這時得到的螢...

Android鎖屏提醒

1.鎖屏顯示的activity如下配置 2.oncreate中新增 getwindow addflags windowmanager.layoutparams.flag show when locked windowmanager.layoutparams.flag dismiss keyguard...

實現Android不鎖屏

手機不鎖屏功能使用android編輯器adt其實是很容易實現的,但是unity並沒有提供現成的介面,但是可以呼叫android介面,來輔助實現這個不鎖屏的功能。修改androidmanifest.xml檔案,新增 package com.test import android.os.bundle i...