BootReceiver无法在所有Android设备上运行

时间:2017-05-01 17:18:59

标签: android android-intent broadcastreceiver android-broadcastreceiver

我一直在努力克服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>

1 个答案:

答案 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版本,因为您可以阅读hereUSB_STATE是另一种选择,基于您想要做的事情。请注意可以使用此方法获取多个广播!

或者,您可以考虑使用firebase sdk中的AccessibilityServiceJobService。更多详情here