我想我明白你想要什麼。如果不是,請忽略我的回答。
首先將這些權限添加到您的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。
我建議你編輯你的問題,添加幾個關於你認爲「顯示GCM消息」的句子,就像我們其他人認爲的「GCM消息」沒有UI一樣。 – CommonsWare 2012-07-29 19:29:51
是的,你是對的。有一個應用程序可以完成顯示任務。因此,開發人員告訴我,如果應用程序使用類似於模式鎖定的方式鎖定,該應用程序無法將設備從睡眠模式喚醒並解鎖。 – user1561415 2012-07-29 19:45:23