2012-07-29 54 views
2

我們使用Google Cloud Messaging在Android設備上接收消息。如果設備處於睡眠模式且啓用了安全性,是否可以在設備上顯示GCM消息? (使用API​​> 2.3 .... 4.0)。Android Google GCM - 當設備處於睡眠模式且啓用安全性時是否可以顯示警報?

設備將通過圖案或臉部識別進行保護。無論設備的狀態如何,我們都希望顯示GCM消息。理想情況下,我們希望設備保持鎖定狀態,但也會顯示消息,如果不可行,我們可以自動解鎖設備並喚醒以顯示消息。

有一個應用程序在設備上顯示來自GCM的消息。所以,我的問題歸結爲是否允許應用程序在使用模式安全性鎖定的設備上顯示消息。

反饋是非常感謝。

我已經嘗試過「FLAG_SHOW_WHEN_LOCKED」,因爲keygaurdmanager已被棄用,但由於某種原因它不起作用。屏幕亮起,但安全模式保持不變。

+0

我建議你編輯你的問題,添加幾個關於你認爲「顯示GCM消息」的句子,就像我們其他人認爲的「GCM消息」沒有UI一樣。 – CommonsWare 2012-07-29 19:29:51

+0

是的,你是對的。有一個應用程序可以完成顯示任務。因此,開發人員告訴我,如果應用程序使用類似於模式鎖定的方式鎖定,該應用程序無法將設備從睡眠模式喚醒並解鎖。 – user1561415 2012-07-29 19:45:23

回答

0

我想我明白你想要什麼。如果不是,請忽略我的回答。

首先將這些權限添加到您的AndroidManifest.xml

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 

在我的應用程序,我展示了用戶的信息通過一個活動,然後在onCreate(),我用這些代碼:

import android.app.KeyguardManager; 
import android.os.PowerManager; 
import android.view.WindowManager; 

// ... 

private KeyguardManager.KeyguardLock mKeyguardLock; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // ... 

    KeyguardManager km = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); 
    mKeyguardLock = km.newKeyguardLock(ClassName); 
    mKeyguardLock.disableKeyguard(); 

    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); 
    PowerManager.WakeLock wl = pm.newWakeLock(
      PowerManager.ACQUIRE_CAUSES_WAKEUP 
        | PowerManager.FULL_WAKE_LOCK, ClassName); 
    wl.acquire(); 

    getWindow().addFlags(
      WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
        | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 
        | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
        | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
}// onCreate() 

製作確保在onDestroy()中重新啓用鍵盤保護程序:

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    mKeyguardLock.reenableKeyguard(); 
}// onDestroy() 

我剛從博客文章中複製這些代碼(不幸的是我不記得它在哪裏)。它工作(minSdkVersion = 7,在真實設備2.x上測試,仿真器< = ICS)。如果可以的話,請嘗試讓我知道它是否可行。


編輯

我不知道,似乎是這個blog post

+0

非常感謝Lai,但Keyguard似乎已被棄用。替代方法是FLAG_SHOW_WHEN_LOCKED,但不起作用。 – user1561415 2012-08-02 21:22:48

+0

感謝您的信息。我沒有注意到:-( – 2012-08-03 04:05:28

相關問題