Начать активность только при перезагрузке

В основном я пытаюсь выполнить действие, содержащее кнопку, которая перезагружает устройство и после перезагрузки возвращается к тому же действию.

Я понимаю, что этот вопрос может быть сбит с толку с другими о перезагрузке устройства, но это не главное, так как я могу заставить устройство нормально перезагрузиться.

Я заставил кнопку перезагрузить устройство, но единственный способ заставить его начать работу после завершения перезагрузки - это зарегистрировать приемник вещания для BOOT_COMPLETED в манифесте. Проблема в том, что этот метод запускает действие каждый раз при загрузке устройства, что нежелательно. Когда я регистрирую получателя на слушателе нажатия кнопки, он не запускает активность после перезагрузки.

Мне было интересно, может ли быть дополнительный в BOOT_COMPLETED что я мог бы использовать, чтобы решить, был ли он намеренно перезагружен.

Любой совет будет оценен, спасибо заранее!

2 ответа

Решение

Просто сохраните целое число, соответствующее устройству, которое намеренно перезагружается во время вашей активности. использование SharedPreference для того же. При перезагрузке, в вашем broadcast receiverпроверьте, установлено ли значение. Если он установлен, начните свою деятельность, иначе отпустите.

РЕДАКТИРОВАТЬ:

Всегда сбрасывайте это значение, когда перезагрузка завершена, и ваша активность впереди.

Ваш XML должен храниться в файле с именем AndroidManifest.xml, а не manifest.java.

Другая причина, по которой ваш код не запускается, может заключаться в том, что ваше приложение установлено во внешнем хранилище (SDCard). BOOT_COMPLETE отправляется приложениям до подключения внешнего хранилища. Таким образом, если приложение установлено во внешнее хранилище, оно не получит широковещательное сообщение BOOT_COMPLETE.

Если это не проблема, то уже есть очень хорошее описание того, как заставить загрузочные завершенные приемники работать на Android.

Попытка запустить сервис при загрузке на Android

Другие вопросы по тегам