Android Sleep API 收到空Intent无法获取有效睡眠数据问题求助
可能的故障原因如下:
PendingIntent配置错误
注册睡眠事件监听时使用的PendingIntentflag配置不符合目标系统版本要求:- API 30(Android 11)环境下如果使用了
FLAG_ONE_SHOT,首次触发后后续收到的回调Intent会丢失extra数据 - 若未添加
FLAG_UPDATE_CURRENT,也会导致事件数据无法正确写入Intent中
- API 30(Android 11)环境下如果使用了
Google Play服务兼容性问题
Sleep API强依赖Google Play服务的位置上下文模块:- 设备上的Google Play服务版本低于Sleep API要求的最低版本,会出现事件数据为空的异常
- 若设备对Google Play服务做了权限限制、后台运行限制,也会导致服务无法正确生成和返回睡眠事件数据
广播接收者过滤规则冲突
检查SleepAPIReceiver在Manifest或者动态注册时的IntentFilter配置:- 若同时配置了其他非Sleep API相关的action,可能会收到其他来源的空Intent触发onReceive
- 可在else分支添加日志打印Intent的action、所有extra字段,先确认回调是否确实来自Sleep API
重复注册监听冲突
如果多次调用Sleep API的事件注册方法,且未先注销旧的监听实例,会导致多个无效的PendingIntent被触发,这部分回调不会携带有效睡眠数据。
内容的提问来源于stack exchange,提问作者Sergi Domingo
相关产品推荐
相关产品推荐

