我想我明白你想要什么。如果不是请忽略我的回答。
首先将这些权限添加到您的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 上)。如果可以,请尝试让我知道它是否有效。
编辑
我不确定,好像是这篇博文。