2015-10-03 119 views
1

我已閱讀了Stackoverflow上的大約10-15個帖子,他們都似乎有解決問題的問題的答案,但我似乎無法讓這些解決方案適用於我的案例。 我有一個應用程序,它允許設置一個鬧鐘,應用程序應該喚醒手機(它它) - >解鎖設備(它沒有) - >顯示一個對話框(它曾經手動解鎖)無法獲取應用程序以編程方式解鎖鍵盤[現有的解決方案都不行!]

我已經在OnCreate)活性的其由AlarmReceiver

KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG"); 
    keyguardLock.disableKeyguard(); 

    final Window win = getWindow(); 
    win.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    win.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

而AlarmReceiver類的的onReceive內開始下面的代碼(I調用WakeLocker.acquire()方法,該方法是採用以下代碼的靜態方法:

public static void acquire(final Context ctx) { 
    if (wakeLock != null) wakeLock.release(); 

    final PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE); 
    wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | 
           PowerManager.ACQUIRE_CAUSES_WAKEUP | 
           PowerManager.ON_AFTER_RELEASE, "TAG"); 
    wakeLock.acquire(); 
} 

我AndroidManifest.xml中包含我使用的是WakefulBroadcastReceiver類接收廣播和裏面的onReceive我開始一個對話活動下列權限

android.permission.WAKE_LOCK 
android.permission.DISABLE_KEYGUARD 

。 我有一個4.4.4 Android的三星S3。我不確定這是否是一個API問題,但我無法得到這個工作。 手機亮起並顯示鎖定屏幕,但在向我顯示對話框之前,它會等待我解鎖。 感謝您在這方面的任何幫助。

+0

沒人願意幫忙? – LeoNeo

回答

1

我將應用程序的主題從Dialog.ALert更改爲DeviceDefault.NoActionbar,並突然開始以我想要的方式工作。 我可能認爲在keyguard上顯示對話框活動是不允許的,因此我的情況是錯誤的。