FT:在锁屏界面的上面自己的view
来源:互联网 发布:沈阳seo引擎优化软件 编辑:程序博客网 时间:2024/06/06 16:32
转载自:http://blog.csdn.net/maosidiaoxian/article/details/40587935
新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能。经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意。
下面是实现过程。
1,使用Activity,而不是View
QQ的弹窗一开始我以为是悬浮View,用WindowManager去添加,但是无论如何就是不显示,后来在朋友提示下换成Activity来实现,在锁屏状态下就能弹窗了。
2.Activity的设置
Activity需要进行以下设置,才可以在锁屏状态下弹窗。
首先是onCreate方法,需要添加4个标志,如下:
然后在AndroidManifest.xml文件当中,对该activity的声明需要加上以下属性:
3.在广播中启动锁屏弹窗
我们设置的是锁屏下才弹窗的,非锁屏下就不适合弹出这个窗口了(你可以试一下,效果会很怪)。一般是注册一个广播接收器,在接收到指定广播之后判断是否需要弹窗,所以在BroadcastReceiver的接收代码中需要先判断是否为锁屏状态下:
这里用到的是KeyguardManager类,用来管理锁屏的,4.1之后该类的API新增了一个isKeyguardLocked()的方法判断是否锁屏,但在4.1之前,我们只能用inKeyguardRestrictedInputMode()方法,如果为true,即为锁屏状态。需要注意的是,在广播中启动Activity的context可能不是Activity对象,所以需要添加NEW_TASK的标志,否则启动时可能会报错。
4.更新弹窗信息
如果弹窗Activity本身并不主动更新信息,当有新的信息来时需要更新Activity的界面,由于在上面我们设的是singleInstance启动模式,所以需要覆写onNewIntent(Intent intent)方法,这样当再次启动这个activity时,新的intent会在该方法中传入。
5.再次亮起屏幕
如果该Activity并未退出,但是被手动按了锁屏键,当前面的广播接收器再次去启动它的时候,屏幕并不会被唤起,所以我们需要在activity当中添加唤醒屏幕的代码,这里用的是电源锁。可以添加在onNewIntent(Intent intent),因为它会被调用。也可以添加在其他合适的生命周期方法。添加代码如下:
6.一些权限
下面是实现过程中需要的一些权限,由于我是从项目代码中抽取出来的,难免多加或遗漏,开发者自己注意一下:
第一条是解锁屏幕需要的,第二条是申请电源锁需要的。
0 0
- FT:在锁屏界面的上面自己的view
- 在csdn上面留下自己的足迹
- 在npm上面发布自己的插件
- 多线程在android上面的下载(3)更新界面
- :)在CSDN上面有自己的窝了
- 在GitHub上面创建一个自己的repository
- 如何在GitHub上面建立自己的个人主页
- 开始在CSDN上面写自己的博客了
- 在自己的linux服务器上面部署ShowDoc
- 在Github上面搭建一个自己域名的Hexo博客
- 如何在github上面搭建自己的个人网站
- android 在锁频界面直接打开自己的应用
- 浮在fragmelayout上面的view点击不到问题的处理
- poj1375 一道ft的解析几何
- google上面创建自己的SVN空间
- 采用caffe的model在自己的数据上面进行 fine-tuning
- 在oschian上面建立自己的开源项目livefeng的过程
- 记录一下自己在mini2440上面 使用uboot的曲折的经历
- Swift 字典的常用方法
- 题目1 : Beautiful String
- POJ题目3517 And Then There Was One(约瑟夫,公式)
- Struts2学习笔记----阿冬专栏
- Java io nio
- FT:在锁屏界面的上面自己的view
- Android之EditText特殊小技巧
- MySQL存储过程详解
- java实现简单算法(二)-Armstrong数(枚举法)
- %TYPE 与 %ROWTYPE
- Leetcode#34||Search for a Range
- Java调试方式
- HDU 5383 Yu-Gi-Oh!
- Python 主要模块和常用方法简览