Вы можете сделать два разных широковещательных приемника: один с ACTION_BOOT_COMPLETED
для фильтра намерений, а другой с другим фильтром намерений, который вы будете использовать.
Или создайте один вещательный приемник с двумя фильтрами намерений, например:
<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.
}
Дайте мне знать, если мне нужно что-нибудь добавить.