Android 锁屏弹窗

最近做项目,为了让订单信息及时得到反馈,所以要求在锁屏状态收到推送消息时,唤起屏幕显示消息。经参考http://blog.csdn.net/maosidiaoxian/article/details/40587935完成该项功能。

首先,在应用界面发一条广播,模仿后台发出一条推送消息:

handler.postDelayed(new Runnable() {@Overridepublic void run() {Intent intent=new Intent();intent.setAction("testScreenDown");sendBroadcast(intent);}},5*1000);

广播接受到消息处理(记得注册广播):

	//锁屏弹窗KeyguardManager km= (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);//判断是否在锁屏状态if (km.inKeyguardRestrictedInputMode()) {Intent alarmIntent = new Intent(context, ScreenDownActivity.class);//从广播里跳转至activity,需要添加以下标志,不然会报错!alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(alarmIntent);}

这里用到一个KeyguardManager,锁屏与解锁的管理类,不过其有关解锁的内部类已经从api13开始废弃了:


可以看到,解锁与锁屏都可以用2个Flag代替,使用起来会更简单,待会用到。

继续,就要开始写锁屏时要弹出来的activity了,先注册:

 

其中excludeFromRecents属性按照字母理解,就是让整个界面不出现在最近访问的历史中,主题设置很重要,该主题是让界面背景设置成当前手机的桌面背景,这样看起来就不会显得突兀了!

acitvity中代码:

 @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_screen_down);final Window win = getWindow();win.addFlags//让该界面显示在锁屏屏幕之上(或者说短暂的隐取锁屏界面)(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED//在未设置锁屏功能时自动解锁| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD//在该界面显示时,保持屏幕常亮//             | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON//唤醒屏幕| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);initViews();}

当中就用到之前提到的flag,另外提一下另一种方法唤醒(已过时,可以不用,了解一下):

 @Overrideprotected void onNewIntent(Intent intent) {
//        PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
//        if (!pm.isScreenOn()) {
//            PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |
//                    PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");
//            wl.acquire();
//            wl.release();
//        }}

最后附上效果图:


附加github地址:https://github.com/george-wind/ScreenDownWindow







本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部