在做解锁监听程序时,一开始采用监听屏幕SCREEN_ON和SCREEN_OFF这两个action。

但奇怪的是,这两个action只能通过代码动态的形式注册,才能被监听到,使用AndroidManifest.xml 完全监听不到。

百度后发现这是PowerManager那边在发这个广播的时候做了限制,限制只能有register到代码中的receiver才能接收。

后来就找各种能静态注册AndroidManifest.xml同时能反映用户解锁行为的广播.于是找到android.intent.action.USER_PRESENT.
每个用户隔一段时间重新开始使用手机时,首先按电源键点亮屏幕,紧接着解锁。android.intent.action.USER_PRESENT就是解锁时发出的intent.
于是,监听android.intent.action.USER_PRESENT就能识别用户进入home界面,进而启动想启动的相关服务,包括弹出对话框welcome用户\后台启动程序升级服务等等。

AndroidManifest.xml文件中注册代码

view source print?
1 <receiver android:name=".ActionReceiver">
2    <intent-filter android:priority="90000">
3    <action android:name="android.intent.action.USER_PRESENT" />
4    </intent-filter>
5 </receiver>

这个intent的说明文档是:
public static final String ACTION_USER_PRESENT
Since: API Level 3
Broadcast Action: Sent when the user is present after device wakes up (e.g when the keyguard is gone).
This is a protected intent that can only be sent by the system.
Constant Value: "android.intent.action.USER_PRESENT"
翻译过来就是:
注意这个action只能有系统发出,是在用户唤醒机器的时候才会发出这种action.
另外, 真的屏幕解锁的时候触发这个广播,而我们接收这个广播会受好多条件的制约。
比如有些第三方桌面不会真正的锁屏,360,LBE等安全软件对广播的拦截等等.

监听屏幕 android.intent.action.USER_PRESENT相关推荐

  1. Android 监听屏幕解锁事件

    在做一个程序的时候,需要时刻保持某一服务是启动的,因此想到了通过监听屏幕SCREEN_ON和SCREEN_OFF这两个action.奇怪的是,这两个action只能通过代码的形式注册,才能被监听到,使 ...

  2. Android监听屏幕解锁和判断屏幕状态

     开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听 ...

  3. 监听屏幕解锁和判断屏幕状态

    开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为android.intent.action.USER_PRESENT的广播,则可以监听解锁事件 ...

  4. 监听android.intent.action.PHONE_STATE状态重复执行问题

    /*** 监听android.intent.action.PHONE_STATE广播时,API21以上会收到两次回调,这两次的state(idle.ringing.offhook)是一样的,使用lab ...

  5. android 监听屏幕是否锁屏

    今天,简单讲讲如何监听手机屏幕是否锁屏. 实现方法:1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可 ...

  6. Android 屏幕唤醒 + 屏幕解锁 + 开机广播android.intent.action.BOOT_COMPLETED

    Android 屏幕唤醒 + 屏幕解锁 + 开机广播android.intent.action.BOOT_COMPLETED 1.内容说明 Android手机开机后,会发送android.intent ...

  7. Android 监听屏幕唤醒和关闭的广播

    今天希望应用程序的服务运行时,可以监听到屏幕的唤醒.继续百度学习法,连同监听闭幕关闭也一同学习了. 此种情况需要动态注册系统广播.在AndroidManifest.xml中静态注册的实际运行中无效. ...

  8. android 手机监听屏幕锁屏,用户解锁

    用到的场景很多,自己发挥 ,废话不多说直接上代码: private classScreenBroadcastReceiverextendsBroadcastReceiver{privateString ...

  9. Android 监听屏幕锁屏,用户解锁

    最近在做视频播放器的时候,遇到一个问题,在用户播放视频然后锁屏之后,视频播放器仍然在继续播放,遇到类似手机系统状态改变的问题的时候,首先想到了广播(don't call me,i will call ...

最新文章

  1. ad域时间源配置_Windows网络服务与配置管理之活动目录学习
  2. 【ionic App问题总结系列】ionic 如何更新app版本
  3. SLAM算法总结——经典SLAM算法框架总结
  4. Lind.DDD敏捷领域驱动框架~介绍
  5. 通过js引用外部脚本(方便直接在浏览器上调试抓取代码)
  6. ubuntu20 编译dpdk错误 -Werror=address-of-packed-member
  7. centos6配置mysql5.7_CentOS 6/7 下 MySQL 5.7 安装部署与配置
  8. html缓慢下拉,html - 列表下拉导航-适用于除野生动物园之外的所有浏览器。 间隔开并缓慢 - 堆栈内存溢出...
  9. Ajax实现原理详解
  10. ssm 项目记录用户操作日志和异常日志
  11. keil修改字体、文本颜色、背景颜色,global.prop使用
  12. 中国地图3D立体效果
  13. 网络适配器出现黄色感叹号!,错误代码56
  14. STM32与BLE蓝牙通信 Android APP配置(一)
  15. 一百行代码爬取漫画喵
  16. PROE5.0飞利浦耳机结构设计教程
  17. [转帖] 李竞恒:帝国的残阳
  18. 高德地图不显示定位点
  19. 网络编程(基于socket接口技术的进程间通信)接上一篇文章补充
  20. linux drm 内存管理,linux DRM GEM 笔记

热门文章

  1. netlogon启动后停止_自耦变压器降压启动原理
  2. php mysql 时间戳查询_mysql中时间查询函数(包括时间戳)
  3. mysql binlog 多少,MySQL binlog后面的编号最大是多大?
  4. C++string类知识点总结
  5. mysql 几十连接_MySQL挑战:10万连接数
  6. 10.Ubuntu下的source insight增加使用期限90天
  7. centos把mysql移到数据盘_Centos转移Mysql的数据位置
  8. python中attr_python中hasattr()、getattr()、setattr()函数的使用
  9. arcgis 快速制图插件_51GIS学院|ArcGIS空间数据分析系列课程的27个视频
  10. [js]可折叠的框架效果