как сказать приложению, что оно было запущено при загрузке устройства? - PullRequest
1 голос
/ 18 января 2012

Привет, я пишу приложение для Android, которое запускается при загрузке, и я подумал, есть ли способ сообщить приложению, что оно было запущено при загрузке устройства? Мне нужно сделать что-то другое, если приложение было запущено вручную (т. е. не при запуске устройства). я использую BroadcastReceiver для запуска приложения при запуске устройства.

Ответы [ 2 ]

1 голос
/ 18 января 2012

Вы можете сделать два разных широковещательных приемника: один с 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.
}

Дайте мне знать, если мне нужно что-нибудь добавить.

0 голосов
/ 18 января 2012

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

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