2009-04-09 50 views
9

我不得不啓用Android的系統鑰匙鎖(一個你當你按下斷電/掛斷按鈕)。在這裏看到:的Android - 系統鑰匙鎖的激活(又名鎖屏)

img

我已經瀏覽的文檔,但一切我發現PowerManagerKeyguardManager。這兩個似乎不是解決方案:-(。

那麼,是否每個人都知道如何從android應用程序實現?(如果需要特殊的權限,這是沒有問題的,但改變設備的設置不是一個解決方案。 ..)

編輯:還是沒有人知道,這是絕對不可能在所有順便說一句克雷格斯與發送鍵解決方案不起作用了(見註釋)

+1

您也可以嘗試在IRC上跳頻(Freenode的#android)和主要開發人員自己 – 2009-04-20 15:24:47

回答

2

我一直在尋找一個完全相同的問題一段時間的答案。顯然,在2.0之後,應用程序級別的設備管理員權限被刪除。但是在Froyo - 2.2中,設備策略管理器顯示爲我們開發人員提供了多種管理級別的控制。

http://developer.android.com/guide/topics/admin/device-admin.html

0

這裏有一個很好的例子嗎?。 :

http://www.anddev.org/throwing-simulating_keystrokes_programatically-t717.html

看起來您可以通過編程將任何按鍵發送到系統。這聽起來像你要找的是KEYCODE_ENDCALL的鍵碼,但如果不工作也有很多其他的代碼來試一下:

http://developer.android.com/reference/android/view/KeyEvent.html

我不知道是否有任何的API調用導致鎖定發生,但這似乎是一個非常堅固的解決方法,直到找到更好的解決方案。

+2

這種方法不再可用,它是爲安全考慮刪除說話。 – sooniln 2009-04-09 21:40:47

+0

啊無賴,你知道任何其他解決方案嗎? – 2009-04-10 00:41:36

+0

嗯,Android 1.0 /即將到來的1.5是目標平臺,所以這將無法正常工作:-( – 2009-04-15 20:58:50

0

挖掘Android源代碼找到WindowManagerService,它似乎有一個公共方法(startAppFreezingScreenLocked)來激活它。這可能是一個開始尋找答案的好地方,不幸的是,它似乎並不像你可以直接獲取WindowManagerService對象。

1

看起來是使用的方法進行屏幕鎖定功能:

public void goToSleep(long time) 

方法PowerManager.java。這有可能以這種方式得到它的引用:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 

然而,這需要許可

android.permission.DEVICE_POWER 

這是隻提供給系統中的2級權限。

所以看起來像這樣是行不通的。這僅適用於1.1版本,我不知道1.5。