Подтвердить что ты не робот

Как автозапуск приложения для Android?

Я не уверен, как автоматически запускать приложение для Android после того, как эмулятор Android завершит загрузку. У кого-нибудь есть фрагменты кода, которые мне помогут?

4b9b3361

Ответ 1

Вам нужно добавить запись разрешения манифеста:

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

(конечно, вы должны указать все другие разрешения, которые использует ваше приложение).

Затем, реализуйте класс BroadcastReceiver, он должен быть простым и быстрым исполняемым. Наилучший подход - установить будильник в этом ресивере, чтобы разбудить ваш сервис (если нет необходимости держать его в режиме ожидания, как писал Прахаст).

public class BootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
    am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi);
}}

Затем добавьте класс Receiver в файл манифеста:

    <receiver android:enabled="true" android:name=".receivers.BootUpReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

Ответ 2

Отредактируйте свой AndroidManifest.xml, чтобы добавить RECEIVE_BOOT_COMPLETED разрешение

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

Отредактируйте часть приложения AndroidManifest.xml для ниже Разрешения

<receiver android:enabled="true" android:name=".BootUpReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
 </receiver>

Теперь напишите ниже в Управлении.

public class BootUpReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, MyActivity.class);  
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);  
}
}

Ответ 3

Если автозапуск означает автоматический запуск при загрузке телефона, вы должны зарегистрировать BroadcastReceiver для BOOT_COMPLETED Intent. Системы Android передают это намерение после завершения загрузки.

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

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

Ответ 4

Я всегда здесь, для этой темы. Я поставлю свой код здесь, чтобы я (или другой) мог использовать его в следующий раз. (Пытаюсь искать в моем коде репозитория).

Добавьте разрешение:

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

Добавить приемник и сервис:

    <receiver android:enabled="true" android:name=".BootUpReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
    <service android:name="Launcher" />

Создать класс Launcher:

public class Launcher extends Service {
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        new AsyncTask<Service, Void, Service>() {

            @Override
            protected Service doInBackground(Service... params) {
                Service service = params[0];
                PackageManager pm = service.getPackageManager();
                try {
                    Intent target = pm.getLaunchIntentForPackage("your.package.id");
                    if (target != null) {
                        service.startActivity(target);
                        synchronized (this) {
                            wait(3000);
                        }
                    } else {
                        throw new ActivityNotFoundException();
                    }
                } catch (ActivityNotFoundException | InterruptedException ignored) {
                }
                return service;
            }

            @Override
            protected void onPostExecute(Service service) {
                service.stopSelf();
            }

        }.execute(this);

        return START_STICKY;
    }
}

Создайте класс BootUpReceiver, чтобы выполнить действие после перезагрузки android.

Например, запуск MainActivity:

public class BootUpReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent target = new Intent(context, MainActivity.class);  
        target.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(target);  
    }
}