接收器在Galaxy S5上启动后没有收到意图(仅限电池!)

时间:2016-06-14 00:15:44

标签: android broadcastreceiver android-manifest intentfilter

我正试图让一个BOOT_COMPLETED接收器在Galays S5 Neo设备上运行(运行5.1.1),以便在设备完全启动后立即启动服务。

所以在我定义的清单中

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

还添加了BOOT_COMPLETED意图

的接收器
<receiver android:name="com.xyzMyApp.BootCompleteReceiver" >
    <intent-filter android:priority="999" >
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

无论是否使用电池,这几乎适用于所有设备。在Galaxy S5 Neo上,这仅在设备连接到开机启动时才有效。如果我在电池上使用设备并重新启动,则可能需要5分钟才能收到意图。

我还尝试接收其他广播,例如android.net.wifi.RSSI_CHANGEDandroid.intent.action.USER_PRESENTandroid.intent.action.TIME_TICK,以便将它们用作启动已完成事件的替代广告。我们的想法是,这些事件经常发生,所以在重新启动后,它将花费很长时间,直到其中一个接收器被触发。事实证明行为是相同的,在电池上它可能需要几分钟,直到任何接收器收到任何意图。

我还禁用了我在系统设置中找到的应用程序的各种电池优化,但这并没有解决问题。

感谢您的每一个提示或想法。

1 个答案:

答案 0 :(得分:0)

尝试添加QUICKBOOT_POWERON,因为某些设备在接收BOOT_COMPLETED广播时有issues

<receiver android:name="com.xyzMyApp.BootCompleteReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    </intent-filter>
</receiver>

还要确保您的应用未安装在外部存储(SD卡)上,如建议on this answer