androidの亮屏,灭屏,解锁广播使用

本文详细介绍了在Android中如何通过动态注册广播接收器来监听屏幕的亮屏、灭屏和解锁状态,解释了为何在AndroidManifest.xml中注册特定的ACTION无法生效的原因,并探讨了谷歌的这种设计背后可能的考量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 亮屏广播的接收
    不需要添加权限那些,我在xml 中配置action 都是不生效的,没有接收到广播。
//亮屏监听
private BroadcastReceiver receiver = new BroadcastReceiver() {
	@Override
	public void onReceive(Context context, Intent intent) {
	if (Intent.ACTION_SCREEN_ON.equals(intent.getAction())) {
	    Log.e(TAG, "亮屏啦,,");
	}
	}
};

注意:但是注册广播时候需要代码java 动态注册否则监听不到。
//注册亮屏广播
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
registerReceiver(receiver, filter);
2. 灭屏(锁屏)的广播同上
filter.addAction(Intent.ACTION_SCREEN_OFF);
然后监听
(Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) 即可
注意:也是需要动态注册广播才能接受到的。
对于这两个action:

android.intent.action.SCREEN_OFF
android.intent.action.SCREEN_ON

在AndroidManifest.xml中注册是不可以的。
这有点不同于其他的action,你只有在Service中通过动态注册去监听这个事件。
这个问题我的理解是google故意这么做的,有两点考虑:
1.提高监听screen_on screen_off门槛
这两个事件是android的基本事件,如果呗大多数程序监听,会大大的拖慢整个系统,所以android也应该不鼓励我们在后台监听这两个事件。
2.有让我们在service后台监听
这也是提供了一个解决问题,强调和service共存亡,不会一直在后台无限情运行。
3.解锁广播

filter.addAction(Intent.ACTION_USER_PRESENT);
if(Intent.ACTION_USER_PRESENT.equals(intent.getAction()))

解锁或者可以使用xml 配置

<!-- 解锁广播 -->
  <receiver android:name="com.example.applock.demos.UserpresentReceiver"> 
            <intent-filter> 
                <action android:name="android.intent.action.USER_PRESENT" /> 
            </intent-filter> 
  </receiver>
然后广播监听
public class UserpresentReceiver extends BroadcastReceiver{
	private String TAG="UserpresentReceiver";

	@Override
	public void onReceive(Context context, Intent intent) {
		String action=intent.getAction();
		Log.e(TAG, "action="+action);
	    if (Intent.ACTION_USER_PRESENT.equals(intent.getAction())) {
	    	Log.e(TAG, "竟然可以解锁");
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值