在Android O中使用意图广播USER_PRESENT

7

由于O更加强制后台服务,当针对26+版本时,我该如何接收USER_PRESENT的广播?

Logcat:

system_process W/BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.USER_PRESENT flg=0x24200010 } to fr.cab13140.nullcontactdeleter/.BootThread
1个回答

5

接收该广播唯一的方法是运行进程,并使用registerReceiver()注册您的接收器。如果您想始终侦听此广播,则最接近的方法是具有前台粘性服务,以尝试最大化服务运行时间的数量。请注意,用户可能不会欣赏这一点。


那么,使用这种方法是不可能的。那 BOOT_COMPLETED 呢?我既没有收到意图也没有 logcat 错误。 - defvs Daniel
1
@cab13140:嗯... BOOT_COMPLETED 应该是有效的,如果我没记错的话,我试过它并且它起作用了。 - CommonsWare
1
与之前版本的Android一样,请确保在重新启动之前启动了您的主要活动或其他内容,以将应用程序移出停止状态。 - CommonsWare
可能就是这个问题。我记得你至少需要启动一次应用程序。 - defvs Daniel
2
@thanhbinh84:请参阅https://developer.android.com/about/versions/oreo/background.html#broadcasts - CommonsWare
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接