You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11以上版本无法接收ACTION_USER_PRESENT Intent问题求助

Android 11+ 无法接收 ACTION_USER_PRESENT Intent 的解决方法

问题原因

Android 11(API 30)及更高版本对ACTION_USER_PRESENT广播做了运行状态与权限限制:后台应用通过RECEIVER_NOT_EXPORTED标记注册的接收器无法收到该广播,而ACTION_SCREEN_OFF不受此规则约束。

可行解决方法

  • 调整接收器导出状态
    将注册时的RECEIVER_NOT_EXPORTED改为RECEIVER_EXPORTED,允许接收器接收外部系统广播。注意此操作会让接收器暴露给其他应用,需评估安全风险。另外READ_PHONE_STATE权限对接收该广播非必需,可移除以减少权限申请。修改后的代码:

    val intentFilter = IntentFilter(ACTION_SCREEN_OFF)
    intentFilter.addAction(ACTION_USER_PRESENT)
    applicationContext.registerReceiver(
        eventReceiver,
        intentFilter,
        null,
        null,
        Context.RECEIVER_EXPORTED
    )
    
  • 前台服务绑定接收器
    若不想暴露接收器,可启动前台服务让应用保持前台运行状态,此时使用RECEIVER_NOT_EXPORTED注册的接收器能正常接收ACTION_USER_PRESENT广播。

  • 辅助功能监听替代
    注册AccessibilityService监听用户解锁事件,此方式不受后台运行状态限制,但需要用户手动授予辅助功能权限,适合对解锁事件依赖较高的场景。

内容的提问来源于stack exchange,提问作者user16741401

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 00:32:17