Android запросить разрешение автозапуск

Android. Автозапуск приложения при загрузке: теория и практика

1. Теория

Взглянув на примеры из официального источника (например, этот и этот) и изучив рекомендации на сайте stackoverflow.com, можно выделить следующие правила:

    В манифесте в элементе «manifest» указать разрешение:

В манифесте в элементе «application» зарегистрировать ваш ресивер на прием сообщения ACTION_BOOT_COMPLETED:

Используйте правильное полное или относительное имя класса вашего broadcast-ресивера. В описании ресивера без необходимости не указывайте атрибуты «enabled», «exported» и т.д. Вполне достаточно настроек и атрибутов по умолчанию.

Код вашего broadcast-ресивера:

Если ваш ресивер используется только для сообщения ACTION_BOOT_COMPLETED, то проверка «if» не обязательна. Однако иногда разработчики используют один и тот же ресивер для разных сообщений. В этом случае фильтруйте сообщения, проверяя их внутри метода onReceive.

Приложение должно быть установлено на внутреннюю память. ОС Android устроена таким образом, что сообщение ACTION_BOOT_COMPLETED отправляется приложениям перед монтированием внешний памяти. Поэтому приложения, установленные на внешней памяти, никогда не получат это сообщение. Чтобы указать системе не устанавливать приложение на внешнюю память, в манифесте НЕ нужно прописывать для атрибута «@android:installLocation» значения «auto» или «preferExternal». По умолчанию, т.е. если этот атрибут не указан, ОС установит ваше приложение только на внутреннюю память. Однако согласно официальной документации лучше явно указать значение «internalOnly», чтобы у вас и других разработчиков не возникло искушение в будущем указать иное значение.

После установки или принудительной остановки (force stop) приложение должно быть запущено хотя бы один раз, чтобы система «запомнила» это приложение для отправки ему сообщения ACTION_BOOT_COMPLETED. Такое поведение было реализовано в версии Android 3.1 в целях безопасности. В чем суть? Все только что установленные приложения находятся в состоянии «stopped» (не путать с активити, т.к. ОС управляет этим состоянием у приложений и активити по-разному). В это же состояние приложение «уходит», когда пользователь в настройках телефона принудительно его останавливает. Пока приложение находится в таком состоянии, оно не будет запущено системой ни по какой причине (например, через ACTION_BOOT_COMPLETED), исключая, конечно же, запуск самим пользователем. Благодаря такому нововведению немалая часть«вирусни и троянцев» перестала работать, т.к. уже нет возможности запуститься автоматом после установки.

Исключение составляют системные приложения: см. замечание пользователя kolipass.

Особенности режима Fast boot в HTC-устройствах. Известно, что HTC-устройства не перезагружаются в классическом смысле, а используют так наз. режим Fast boot (это одна из форм гибернации), сохраняя состояние ОС на диск. Поэтому сообщение ACTION_BOOT_COMPLETED не отправляется системой, т.к. в действительности перезагрузка не происходит (см. здесь). Вместо ACTION_BOOT_COMPLETED система может отправить следующие сообщения:

Читайте также:  Datepicker android studio java

В вашем приложении укажите в теге «receiver» кроме ACTION_BOOT_COMPLETED также вышеуказанные сообщения. Кроме этого необходимо прописать разрешение в дополнение к п.1:

2. Практика: ошибки и особенности эксплуатации

Разберем ошибки, которые совершают новички при настройке приложения и в коде.

    После установки или force stop приложение ни разу не запускалось (см. п.1.5).

Приложение установлено не на внутренней памяти, или пользователь вручную перенес его на внешнюю память (см. п. 1.4).

У некоторых разработчиков прием начинал работать, когда они указывали относительное имя класса ресивера.

Также некоторые разработчики, отлаживая приложение, в logcat не видели своих сообщений из ресивера. Используйте Toast для отладки:

Опечатки или несуществующие сообщения внутри тега ресивера:

Неправильное положение элементов в манифесте приложения:

  • «uses-permission» должен быть указан только как прямой потомок элемента «manifest», не нужно его указывать/дублировать в теге «receiver»;
  • тег «receiver» должен быть указан только как прямой потомок элемента «application».

  • Различные диспетчеры задач, оптимизаторы, приложения безопасности, Startup-менеджеры и т.п. могут отслеживать регистрацию приложения для приема ACTION_BOOT_COMPLETED и запрещать/разрешать его получение при загрузке. Удалите эти приложения или добавьте в исключение вашу программу в их настройках.

    Как было указано выше, некоторые устройства используют режим Fast boot. Можно попробовать в настройках телефона отключить этот режим или учесть п. 1.6.

    В приложении нет ни одной активити, поэтому после установки у пользователя нет возможности хотя бы 1 раз запустить ваше приложение. Из-за этого сообщение ACTION_BOOT_COMPLETED не будет отправлено в ваше приложение.

    Не ошибки, но все же: указаны лишние, не обязательные атрибуты в теге «receiver», например («uses-permission», «enabled», «exported»):

    3. Отладка ресивера в эмуляторе и на реальных устройствах.

      В терминале выполните:

    Далее, чтобы отправить ACTION_BOOT_COMPLETED всем приложениям, наберите в терминале:

    Или для отправки ACTION_BOOT_COMPLETED конкретному приложению наберите в терминале:

    В эмуляторе: установите ваше ПО, запустив его из студии. При этом студия соберет ваш проект, установит приложение и запустит его. После этого закройте эмулятор (это аналогично выключению на реальном устройстве). Чтобы получить сообщение ACTION_BOOT_COMPLETED, запустите эмулятор из AVD-менеджера, а не с помощью кнопки «Run app» в тулбаре студии.

    После запуска эмулятора во вкладке Android Monitor укажите запущенный эмулятор и ваше приложение, чтобы просмотреть логи logcat.

    Итоги

    Чтобы ваше приложение запускалось при загрузке на всех устройствах, манифест как минимум должен выглядеть так:

    Код ресивера, как правило, будет таким:

    Надеюсь, эта статья поможет новичкам побороть «коварного врага» под названием «ACTION_BOOT_COMPLETED».

    Источник

    Как включить, выключить и настроить автозапуск приложений на Android

    С автозапуском приложений на Андроид сталкивается каждый пользователь операционной системы от Google.

    Это стандартная опция, благодаря которой многие приложения функционируют именно так, как должны. Тем не менее автозапуск на Андроид может замедлять работу всего устройства в некоторых случаях.

    Читайте также:  Usb плееры для андроид

    Что такое автозапуск приложений на Android

    Ответить на вопрос “Что такое автозапуск приложений на Андроиде” можно всего одним объяснением.

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

    Именно благодаря автозапуску программ от них приходят уведомления, происходят фоновые обновления и многое другое. Вам пришло уведомление о сообщении в приложении ВКонтакте? Если бы не фоновая работа софта, то уведомления бы не было.

    На фоне программное обеспечение регулярно синхронизируются, причем делает это настолько часто, что вы получаете сообщение секунда в секунду. Это лишь пример, но принцип и польза автоматического запуска программ при включении, думаю, понятна.

    Также существуют приложения, временно работающие на фоне. Они отличаются от автозапуска тем, что не всегда функционируют, а делают это лишь при необходимости.

    Например, вы скачиваете файл через браузер, свернули его и зашли в мессенджер. В таком случае загрузка будет продолжаться на фоне, но как только она завершится, браузер будет выгружен из фоновых процессов аппарата. Это и обозначает программу, функционирующую на фоне.

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

    Как включить автозапуск

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

    Существуют исключения, связанные с неполадками в операционной системе или в недоработке программного обеспечения, из-за которых опция автозапуска не работает. К счастью, с помощью стороннего софта данную неприятность можно исправить.

    Как включить автозапуск приложений:

    1. Загрузить и установить программное обеспечение AutoStart — No root. Оно абсолютно бесплатное и работает на всех мобильных устройствах под управлением операционной системы Андроид.
    2. Запустить софт.
    3. Напротив надписи “Applications” есть кнопка “ADD”. Нажать на нее.
    4. Отобразится перечень установленных приложений. Надо тапнуть на необходимый вариант.
    5. Напротив надписи “Auto startup” указан статус автозапуска. Если есть красная кнопка “OFF”, то функция отключена. Следует нажать на нее, переведя ползунок в зеленое положение “ON”.
    6. Теперь можно закрыть программу и перезагрузить мобильное устройство. Выбранная утилита запустится при активации гаджета и будет функционировать в фоновом режиме.

    Как отключить автозапуск приложений на Android

    Большинство пользователей, заинтересовавшихся этой темой, ищут, как отключить автозапуск приложений на Андроид.

    Такой запрос связан с тем, что в фоновом режиме работы приложение потребляет аппаратную мощность гаджета, а учитывая, что такие программы исчисляются не в единицах, работоспособность смартфона или планшета может быть существенно снижена.

    На что и как именно влияет автозапуск Android в негативном ключе:

    • чипсет вынужден обрабатывать большее количество команд и запросов, из-за чего он сильнее греется и медленнее вычисляет;
    • каждый фоновый процесс содержится в оперативной памяти, и если она заполнена, то производительность существенно ухудшается, а также закрываются программы и процессы на фоне;
    • из-за большой загруженности требуется много энергии, а это значит, что заряд аккумуляторной батареи расходуется быстрее.
    Читайте также:  Рабочий стол для андроид космос

    Подчеркну, что все упирается в конкретную модель смартфона или планшетника. Если у вас флагман от известного бренда, то очень маловероятно, что придется задумываться над автоматическим запуском.

    В то же время устаревшие или технически слабые аппараты сильно подвержены снижению производительности из-за фоновых процессов. У них слабые чипсеты и небольшой объем оперативной памяти, которая быстро заполняется.

    Казалось бы, надо отключить автозапуск в целом и проблема решена. Но не все так просто. Автоматическое функционирование жизненно необходимо для некоторых программ, поэтому выключать его надо выборочно.

    Вернемся к примеру с ВКонтакте. Если вы деактивируете опцию в этом софте, то никаких уведомлений получать не будете. В таком случае зачем вообще пользоваться техникой, которую пришлось лишать одной из главных функций?

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

    Способ отключения зависит от версии операционной системы и начинки.

    Инструкция для MIUI (начинка в Xiaomi):

    1. Перейти в Настройки.
    2. Открыть раздел “Все приложения”.
    3. Тапнуть на софт, который хотите отключить.
    4. Переместить ползунок напротив надписи “Автозапуск” в выключенное положение.

    Инструкция для стандартного Android:

    1. Перейти в Настройки.
    2. Открыть раздел “Приложения”.
    3. Выбрать программу.
    4. Перейти в закладку “Батарея”. Если таковой нет, пропустите этот этап.
    5. Переместить ползунок напротив надписи “Работа в фоновом режиме” в выключенное положение.

    Обратите внимание, что большинство предустановленных утилит отключить невозможно.

    Настройка автозапуска с помощью программ

    Существует программное обеспечение, созданное для контроля автоматического запуска утилит. С помощью них можно включать и отключать данную опцию быстро и удобно.

    Boot Manager

    Одна из самых первых программ для контроля автозагрузки. Перед ее установкой необходимо инсталлировать Xposed Framework.

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

    Далее останется лишь выбрать софт и отключить его. Не забудьте перезагрузить мобильное устройство после внесения изменений в автоматическую загрузку!

    All in One Toolbox

    Еще одно программное обеспечение, более современное и с расширенными функциями. Alii in One Toolbox создано для детальной настройки аппарата, которая включает в себя автозапуск.

    Все, что требуется от пользователя, это инсталлировать софт из Play Market и дать ему запрашиваемые разрешения при первом запуске.

    Так как программа создана не только для контроля автоматической загрузки, в перечне функций необходимо выбрать “Автозагрузка”. Ну а дальше уже стандартный процесс взаимодействия с ползунками.

    Greenify

    Отличное приложение, единственный минус которого — локализация только на английский язык.

    В остальном утилита позволяет работать со множеством функций мобильного устройства, оптимизируя и ускоряя его.

    Для отключения автозапуска приложений на Андроид следует перейти в раздел “App Analyzer”, и деактивировать приложения в списке “Running in Background”.

    Источник

  • Оцените статью