Я попытался использовать пример кода в этой ссылке, но он кажется устаревшим, и он не работал. Итак, какие изменения я должен внести и в какие файлы автоматически запускать мое приложение после завершения загрузки Android?
android
broadcastreceiver
startup
Poojan
источник
источник
Intent.ACTION_BOOT_COMPLETED
вместо жесткого кодирования строку в вашем приемнике. Также следует использовать новыйIntent(context, MySystemService.class)
конструктор при создании Intent.Multiple markers at this line - BroadcastReceiver cannot be resolved to a type - The public type StartMyServiceAtBootReceiver must be defined in its own file
наpublic class
линию. Любые идеи?Это как сделать деятельность начинается после андроида перезагрузки устройства:
Вставьте этот код в ваш
AndroidManifest.xml
файл внутри<application>
элемента ( не внутри<activity>
элемента):Затем создайте новый класс
yourActivityRunOnStartup
(соответствующийandroid:name
указанному для<receiver>
элемента в манифесте):Примечание: вызов
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
важен, потому что действие запускается из контекста вне действия. Без этого деятельность не начнется.Кроме того , значение
android:enabled
,android:exported
иandroid:permission
в<receiver>
теге , кажется , не является обязательным. Приложение получает событие без этих значений. Смотрите пример здесь .источник
Application
? Может внутриonCreate()
?onReceive()
изBroadcastReceiver
Слушайте ACTION_BOOT_COMPLETE и делайте то, что вам нужно оттуда. Здесь есть фрагмент кода .
Обновить:
Исходная ссылка на ответ недоступна, поэтому, основываясь на комментариях, здесь приведен связанный код, потому что никто никогда не пропустит код, когда ссылки не работают.
В AndroidManifest.xml (часть приложения):
...
...
Источник: https://web.archive.org/web/20150520124552/http://www.androidsnippets.com/autostart-an-application-at-bootup
источник
Кроме того, вы можете использовать приложение, такое как AutoStart, если вы не хотите изменять код, чтобы запустить приложение Android при запуске: AutoStart - без рута
источник
Решение Шона у меня изначально не работало (Android 4.2.2). Мне пришлось добавить фиктивное действие в тот же проект Android и запустить действие вручную на устройстве хотя бы один раз. Затем решение Шона начало работать, и BroadcastReceiver был уведомлен после последующих перезагрузок.
источник
Я хотел бы добавить один момент в этот вопрос, с которым я столкнулся пару дней. Я перепробовал все ответы, но они не работали для меня. Если вы используете Android версии 5.1, пожалуйста, измените эти настройки.
Если вы используете Android версии 5.1, то вы должны отменить (Ограничить запуск) в настройках приложения.
настройки> приложение> ваше приложение> Ограничить запуск (отменить выбор)
источник
Другой подход заключается в использовании
android.intent.action.USER_PRESENT
вместо того,android.intent.action.BOOT_COMPLETED
чтобы избежать замедления во время процесса загрузки. Но это только в томtrue
случае, если пользователь включил блокировку экрана - иначе это намерение никогда не передается.Ссылочный блог - проблема с намерением Android ACTION_USER_PRESENT
источник