2012-12-01 27 views
1

我試圖讓我的應用程序通過鎖屏獲取用戶的某些輸入,但無法使用
這樣做。android FLAG_SHOW_WHEN_LOCKED無法正常工作

我試圖在的onCreate以下行以及onAttachToWindow回調,但似乎沒有任何關於活像計算器

Window window = getWindow(); 
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 

我檢查了大部分問題,他們都指向了上述方案。

我們是否需要使用任何權限或缺少任何東西。 我上一個植根GALAXY S

回答

0

答案下面的工作建議,也沒有工作...唯一的選擇留給我現在加入許可清單中禁止keygaurd和使用

KeyguardManager myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); myLock = myKeyGuard.newKeyguardLock(); myLock.disableKeyguard(); 

我不不想添加新權限,因爲這會使我的應用程序進入手動更新而不是自動更新。 :(

+0

你的回答或我的回答有什麼不同?你使用的代碼我只是在使用LayoutParams做同樣的事情。將我的代碼放在正確的活動,那麼它肯定會工作 –

+0

如果您有任何問題,那麼你可以在這裏閱讀有關所有標誌http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_DISMISS_KEYGUARD –

+0

您的答案是我希望可以工作的答案,因爲它不需要我關注啓用和禁用鍵盤保護程序,也不需要任何許可。 另一方面,我的答案需要一個權限添加到清單,並啓用和禁用手動 –

2

請注意,你的活動不應該是一個對話框沿着 我曾在清單中定義:

<activity 
    android:name="TestDialog" 
    android:theme="@android:style/Theme.Dialog" > 
</activity> 

我刪除主題後,它的工作和活動顯示ov呃任何鎖屏。 也許你可以使用@android:style/Theme.Translucent的風格來模擬對話框。

0

我有同樣的問題,我可以確認問題是對話框的主題。看起來屬性android:windowIsFloating負責在鎖定屏幕上不顯示對話框。該屬性在Holo對話框主題中設置爲true

但是,如果你派生河洛對話主題,以一個自己的風格是這樣的:

<style name="ReminderAlarmDialog" parent="@android:style/Theme.Holo.Dialog"> 
    <item name="android:windowIsFloating">false</item> 
</style> 

對話活動將在鎖定屏幕頂部顯示。 唯一問題:對話框將填滿整個屏幕,因此看起來不太好。所以它不是一個真正的解決方案,只是解釋爲什麼對話主題不起作用。

0

我遇到了同樣的問題,解決辦法是在您的活動中刪除setType行。 (如果你已經添加了)

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    //getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
}