您的位置:首页 > 移动开发 > Android开发

android 在待机状态下显示某一个activity

2013-01-25 12:54 447 查看
问题描述:有报警信息到来时,需要立即显示提示dialog。程序在系统非待机状态时提示对话框会正常显示,但是当系统处于待机休眠状态时,在受到报警提示信息之后,对话框并不会正常显示出来。

解决方法:在需要显示的那个activity的onCreate方法中写上如下语句

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// if (wakeLock == null) {
// PowerManager pm = (PowerManager)
// getSystemService(Context.POWER_SERVICE);
// wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "my tag");
// wakeLock.acquire();
// }
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);

Log.i("INFO", "onCreate() in DismissLock");
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
kl = km.newKeyguardLock("INFO");
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "INFO");
wl.acquire(); // wake up the screen
kl.disableKeyguard();// dismiss the keyguard

this.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

setContentView(R.layout.activity_event_alert);

}
在onDestroy方法中写上如下语句

public void onDestroy() {
Log.i(TAG, "onDestroy");

wl.release();
kl.reenableKeyguard();

super.onDestroy();
}
在manifest中配置权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
写好以上语句之后基本上已经可以在待机状态下显示了。

但是我遇到的问题是,在报警到来后任然不能正常显示提示对话框。查了好久,终于在stackoverflow上看到了一篇介绍的文章点击打开链接,正如这片文章中所说的我在manifest中将需要显示的那个对话框设置成android:screenOrientation="portrait",于是我将这句话删除,然后程序能够在正常运行。待机状态能够正常提示了。

可参考下这个http://stackoverflow.com/questions/9554950/activity-to-be-displayed-even-when-phone-is-in-locked-mode?answertab=active#tab-top

和http://developer.android.com/reference/android/os/PowerManager.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: