Начать действие при загрузке телефона в Android

Я хочу, чтобы мое приложение запускалось автоматически при загрузке телефона. Я объявил BroadcastReceiver в файле манифеста.

<receiver android:name=".Autostart">  
<intent-filter>  
    <action android:name="android.intent.action.BOOT_COMPLETED" />  
</intent-filter>  

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

Я сделал java-файл для приемника.

Автостарт.java

public class Autostart extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {  

    Intent pushIntent = new Intent(context, MushTouchActivity.class); 
    pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(pushIntent);
    }
}

}

Но приложение не запускается при включении телефона. Может ли кто-нибудь сказать мне, что мне здесь не хватает?


person Swayam    schedule 01.06.2012    source источник


Ответы (3)


попробуйте свой оператор if следующим образом:

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


        Intent i = new Intent(context, MushTouchActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        context.startActivity(i);
    }
person FoamyGuy    schedule 01.06.2012
comment
Это действительно работает. Если вы хотите запускать активность при загрузке, вам нужно добавить этот флаг. Спасибо. - person Stan; 19.02.2013

Если вы используете Android 3.1 или новее:

Убедитесь, что вы запускали приложение хотя бы один раз вручную (например, открыв его из панели приложений). В противном случае ваше приложение помечается системой как остановленное:

Приложения находятся в остановленном состоянии, когда они впервые установлены, но еще не запущены

Остановленные приложения не получают никаких широковещательных намерений, включая BOOT_COMPLETED.

См. Android 3.1. Платформа – запуск элементов управления в остановленных приложениях для получения дополнительной информации.

person Community    schedule 01.06.2012
comment
Спасибо за ваш ответ, но я разрабатываю для 2.3.3, и я также запускаю свое приложение вручную один раз. Только тогда я перезагружаюсь. - person Swayam; 01.06.2012
comment
@CodeDroid Учитывая детали вопроса, это, безусловно, возможно. Поскольку вы не предоставляете дополнительную информацию: я думаю, я проголосовал за один из ваших вопросов или что-то в этом роде, и вы просто злитесь? Изменить: возможно, потому что вчера я проголосовал за это. - person ; 09.06.2012

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

person Tallal Tasawar    schedule 15.03.2019