监听屏幕 android.intent.action.USER_PRESENT

在开发Android解锁监听程序时,遇到SCREEN_ON和SCREEN_OFF广播只能通过代码动态注册才能监听的问题。原因是PowerManager限制,非代码注册的Receiver无法接收到这些广播。解决方案在于动态注册BroadcastReceiver来捕获ACTION_USER_PRESENT事件。
摘要由CSDN通过智能技术生成

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android系统中可以通过监听广播来实现对蓝牙耳机事件的监听,其中最常用的广播是android.intent.action.MEDIA_BUTTON。 当用户按下蓝牙耳机上的按钮时,系统会发送此广播,应用程序可以通过注册广播接收器来接收此广播并执行相应的操作。 以下是一个简单的示例代码,演示如何注册广播接收器以监听蓝牙耳机事件: ``` public class BluetoothHeadsetReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_MEDIA_BUTTON)) { KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); if (event != null && event.getAction() == KeyEvent.ACTION_DOWN) { // 处理耳机按钮按下事件 // ... } } } } ``` 在上述代码中,我们创建了一个广播接收器BluetoothHeadsetReceiver,并在其中实现了onReceive方法。当收到android.intent.action.MEDIA_BUTTON广播时,我们从Intent中获取键事件,并判断是否为按下事件。如果是按下事件,则可以执行相应的操作。 最后,我们需要在Activity或Service中注册广播接收器,如下所示: ``` BluetoothHeadsetReceiver receiver = new BluetoothHeadsetReceiver(); IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); registerReceiver(receiver, filter); ``` 在上述代码中,我们创建了一个BluetoothHeadsetReceiver对象,并将其注册为广播接收器,同时指定了要监听的广播类型为android.intent.action.MEDIA_BUTTON。 这样,我们就可以通过注册广播接收器来监听蓝牙耳机事件,实现一些类似音乐播放器暂停、继续等操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值