Программируем под 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

vox-populijavaпрограммированиеandroidразработка
108
45.617 GOLOS
0
В избранное
Web Development
Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает тех программистов, которые презирают тех, кто их презирает.
108
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (1)
Сортировать по:
Сначала старые