2015-10-14 87 views
2

我遇到了Android 6.0的一個問題。棉花糖從官方的Nexus工廠固件映像網站(https://developers.google.com/android/nexus/images)加載到Nexus 6。當手機被鎖定並且一項活動禁用鍵盤鎖時,鍵盤未顯示

我有一個應用程序,我使用AlarmManager啓動禁用鍵盤鎖的活動,因此即使手機被鎖定(如鬧鐘應用程序),活動仍可見。 在此活動中,如果用戶單擊某個按鈕,則會打開一個對話框,用戶應該在該對話框中輸入EditText視圖。當對話框顯示或者用戶點擊EditText時,它應該打開鍵盤。 這一直工作到現在似乎工作在我的Nexus 6除6.0以外的每個操作系統版本。

我懷疑,原因是手機被鎖定,當活動啓動時,如果我開始活動時手機解鎖,然後鍵盤顯示完美。這似乎只發生在6.0。

任何人都可以確認這一點,或者讓我知道如果6.0中有些東西已經改變,我不知道?

謝謝。

回答

2

最後我找到了一個工作解決方案。對話窗口似乎在棉花糖上有自己的標誌,必須下注。我做到了,在AlertDialog這樣的:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("My Title"); 
// Add other stuff for AlertDialog here 
AlertDialog alertDialog = builder.create(); 
alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
alertDialog.show(); 

對於我PreferenceActivity我不得不把EditTextPreference爲了解決這個問題,然後在XML配置文件中使用myappname.TextPref,而不是EditTextPreference延伸。

class TextPref extends EditTextPreference { 

    public TextPref(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    protected void showDialog(Bundle state) { 
     super.showDialog(state); 

     Dialog dialog = getDialog(); 
     dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
     dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
     dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
     dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 
} 
+0

完美地工作。我是否在文檔的某個地方錯過了這個地方,或者這個變化完全沒有記錄? – drk

+0

我沒有在文檔中找到任何內容,只是嘗試過。不幸的是,Toast消息似乎有同樣的問題。然而我沒有解決方法,因爲似乎沒有辦法得到吐司之窗。 –

+0

也許你可以嘗試使用SnackBar而不是Toast。這對你有用嗎? – drk