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

问题描述:有报警信息到来时,需要立即显示提示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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值