从Oreo开始,Android禁止在Manifest中使用隐式广播接收器,并建议在运行时注册接收器,或者使用JobSchedule。还列出了一些例外情况,但我无法找到可接受的答案。
我有一项服务只在手机处于CAR模式时才在后台运行,到目前为止我用这个来确定设备何时进入/退出汽车模式并相应地启动/停止服务:
<intent-filter>
<action android:name="android.app.action.ENTER_CAR_MODE"/>
<action android:name="android.app.action.EXIT_CAR_MODE" />
</intent-filter>
我查看了JobSchedule构建器,但是我找不到任何与CAR有关的内容,只有充电,网络类型以及其他与我无关的内容。
我应该如何解决这个问题?
有什么想法吗?
答案 0 :(得分:0)
根据您的需要
一种服务,它在设备进入汽车模式时启动,在用户离开时结束,而不会让用户在您的应用程序中观看(因此没有打开活动)
可能是Google希望通过新的API 26限制来避免电池耗尽的类型。如果用户在执行此操作时正在观看您的应用,则进入和退出汽车模式应仅生成UI的更改。
你可以创建一个<div id="myTest"></div>
并以X分钟间隔运行它以检查JobScheduler
的实际设备条件,并在满足条件时启动前台服务,但这距离很远您当前的行为将通过固定通知通知用户。