2012-01-18 6 views
1

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

ответ

1

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

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

+0

Перед началом работы (i) вам также понадобятся i.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); – NickT

+0

@NickT Спасибо. Забыл этот бит. Я обновил. – Jakar

0

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

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

, что он уже делает, предположительно, когда он начинается после загрузки – NickT