Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Программируем под Android, добавление приложения в автозагрузку


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

В первую очередь, пропишем в AndroidManifest.xml права:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

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

Для этого в манифесте регистрируем новый Ресивер.

Ресивер служит для получения Широковещательных сообщений

Внутри <application> добавим следующий код:

<receiver
            android:name=".MyBroadcastReceiver"
            android:enabled="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </receiver>

android:name указываем название класса-ресивера.

В <intent-filter> фильтр намерений объявляет возможности его родительского компонента.

<action android:name="android.intent.action.BOOT_COMPLETED" /> - указываем, что надо получать сообщения.

android.intent.category.DEFAULT - устанавливает компонент, как обработчик по умолчанию для данного намерения.

Далее создаём Broadcast Receiver. В Android Studio делается так:
В списке файлов проекта app/java/{package}/ правая кнопка мыши - New - Other - Broadcast Receiver.

Откроется окно:
Imgur и жмём Finish.

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

Реализация кода будет происходить в методе класса onReceive.

Код, который я разместил внутри, давайте разберём его.

if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {

            Toast toast = Toast.makeText(context.getApplicationContext(),
                    "Робит", Toast.LENGTH_LONG);

            toast.show();

            Log.d("myapp", "Робит");

            Intent intents = new Intent(context.getApplicationContext(), MainActivity.class);

            intents.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);

            context.startActivity(intents);
        }

Условие нам нужно, если бы будем получать не только сообщения Action_boot_completed.

if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))

Toast мы уже реализовывали и разбирали.

Log пишем в лог, что запустилось. "myapp" - вам поможет отфильтровать логи и найти нужный. "Робит" - указывает сообщение лога.

Itent указываем какой Активити вызвать.
addFlags - добавляет флаги, влияющие на работу Activity. Флаг FLAG_ACTIVITY_NEW_TASK означает, согласно документации, что действие станет началом новой задачи в этом стеке истории.

Список всех флагов на русском здесь.

Вот так просто заставить приложение автоматически запускаться. Далее реализуем Сервисы.

Материал подготовлен автором @zheev

Фото взято с сайта android-indonesia.com

33
20.704 GOLOS
На Golos с August 2017
Комментарии (1)
Сортировать по:
Сначала старые