Привет, я пишу приложение для Android, которое запускается с загрузки, и я задавался вопросом, есть ли способ сообщить, что приложение было запущено с загрузки устройства? мне нужно, чтобы он делал что-то другое, если приложение было запущено вручную (т. е. когда устройство не было запущено). Я использую BroadcastReceiver для запуска приложения при запуске устройства.Как сообщить программе, что она была запущена с загрузки устройства?
ответ
Вы можете либо сделать два разных вещания получателей, который имеет ACTION_BOOT_COMPLETED
для фильтра намерений, а другой - другой фильтр намерений, который вы использовали бы.
Или создать один BroadcastReceiver, который имеет два намерений фильтров, как:
<receiver android:name=".BatteryReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
<intent-filter>
<action android:name="SOMETHING_ELSE"/>
</intent-filter>
</receiver>
, а затем в onReceiver
сделать:
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
// do code for phone just powered on
} else {
// do code for phone is already on
}
EDIT: выше предполагает, что вы используете BroadcastReceiver
под два обстоятельства, которые могут быть не так, если судить по вашему вопросу.
Так что, если вы начинаете в Activity
(или услугу), то в BroadcastReceiver
коде, вы можете сделать:
Intent i = new Intent(context, MyClass.class);
i.putExtra("STARTED_FROM_BOOT", true);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Затем в деятельности, вы можете сделать:
if (getIntent().hasExtra("STARTED_FROM_BOOT")){
// do your code for when started from boot.
}
Пусть я знаю, если мне нужно что-то добавить.
да, крючок broadcastreceiver
с а на boot completed
намерения в манифесте и при загрузке устройства вверх, что приемник будет срабатывать, и вы можете делать все, что вы хотите там
<receiver android:name=".BatteryReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
, что он уже делает, предположительно, когда он начинается после загрузки – NickT
Перед началом работы (i) вам также понадобятся i.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); – NickT
@NickT Спасибо. Забыл этот бит. Я обновил. – Jakar