В Интернете есть несколько предложений, что кроме действия BOOT_COMPLETED
вам также понадобится QUICKBOOT_POWERON
, поддерживаемый некоторыми устройствами.Вы можете проверить это Q / A для деталей.
Чтобы реализовать это, мне также пришлось добавить android:enabled="false"
, а затем по требованию, когда пользователь выбирает его, я программно изменил это на android:enabled="true"
но это немного сложнее, чтобы попробовать.
Вы можете начать с изменения кода с этим, чтобы увидеть, работает ли он.
<receiver android:name=".BootCompletedReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
В случае, если вы хотите попробовать логику отключенияи затем включите это программно, чтобы сделать это, используя этот код:
private static void changeBootStateReceiver(Context context, boolean enable) {
ComponentName receiver = new ComponentName(context, BootCompletedReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
enable ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
: PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
Я также хотел бы отключить функцию, когда она мне больше не нужна.
Особые случаи:
В зависимости от производителя устройства при загрузке есть несколько отчетов о различных трансляциях:
- Xiaomi MIUI использование:
android.intent.action.REBOOT
- HTC использование:
com.htc.action.QUICKBOOT_POWERON