我一直在努力克服Boot_complete接收器无法在某些设备上运行的问题。
像Vivo设备一样,iManager应用程序带有自动启动管理器。 用户可以在设备启动时从自动启动切换应用程序。
在设备重启后,我应该使用以下内容作为intent-filter来重启我的服务。
早些时候想过使用Battery_Change接收器,但它不能从manifest中工作,因为我必须是运行时接收器寄存器。
任何建议都会非常有帮助。
以下是我用作应用的intent-filter的内容。在大多数设备中,它按预期工作。但不是全部。
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<action android:name="android.intent.action.REBOOT" />
</intent-filter>
答案 0 :(得分:1)
我和我的团队在遇到类似问题时发现了一件事。 您可以像这样监视usb状态:
<receiver
android:name=".MyReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_STATE" />
</intent-filter>
</receiver>
如果内存对我有用,这将发送广播之前常规BOOT_COMPLETED
操作,告诉您有USB连接或没有连接。
有些制造商使用他们自己的BOOT_COMPLETED
版本,因为您可以阅读here但USB_STATE
是另一种选择,基于您想要做的事情。请注意可以使用此方法获取多个广播!
或者,您可以考虑使用firebase sdk中的AccessibilityService
或JobService
。更多详情here。