关于intent之android.intent.action.USER_PRESENT的接收与使用

在做解锁监听程序时,一开始采用监听屏幕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文件中注册代码

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等安全软件对广播的拦截等等.

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值