Начать активность только при перезагрузке
В основном я пытаюсь выполнить действие, содержащее кнопку, которая перезагружает устройство и после перезагрузки возвращается к тому же действию.
Я понимаю, что этот вопрос может быть сбит с толку с другими о перезагрузке устройства, но это не главное, так как я могу заставить устройство нормально перезагрузиться.
Я заставил кнопку перезагрузить устройство, но единственный способ заставить его начать работу после завершения перезагрузки - это зарегистрировать приемник вещания для BOOT_COMPLETED
в манифесте. Проблема в том, что этот метод запускает действие каждый раз при загрузке устройства, что нежелательно. Когда я регистрирую получателя на слушателе нажатия кнопки, он не запускает активность после перезагрузки.
Мне было интересно, может ли быть дополнительный в BOOT_COMPLETED
что я мог бы использовать, чтобы решить, был ли он намеренно перезагружен.
Любой совет будет оценен, спасибо заранее!
2 ответа
Просто сохраните целое число, соответствующее устройству, которое намеренно перезагружается во время вашей активности. использование SharedPreference
для того же. При перезагрузке, в вашем broadcast receiver
проверьте, установлено ли значение. Если он установлен, начните свою деятельность, иначе отпустите.
РЕДАКТИРОВАТЬ:
Всегда сбрасывайте это значение, когда перезагрузка завершена, и ваша активность впереди.
Ваш XML должен храниться в файле с именем AndroidManifest.xml, а не manifest.java.
Другая причина, по которой ваш код не запускается, может заключаться в том, что ваше приложение установлено во внешнем хранилище (SDCard). BOOT_COMPLETE отправляется приложениям до подключения внешнего хранилища. Таким образом, если приложение установлено во внешнее хранилище, оно не получит широковещательное сообщение BOOT_COMPLETE.
Если это не проблема, то уже есть очень хорошее описание того, как заставить загрузочные завершенные приемники работать на Android.