2015-07-27 6 views
0

У меня есть настройка, в которой BroadcastReceiver получает намерение, которое может быть предназначено для запуска службы или действия. Есть ли какая-то возможность проверить намерение и решить, следует ли начинать активацию или запускать службу с ней? Назначения служб будут ясными и будут инициализированы именем службы.Запуск startActivity/startService путем проверки намерения

+0

решать в зависимости от того, что? Вы проверяете свой собственный «Намерение» или системный? Вы можете проверить компонент через 'getComponent' для явных намерений –

ответ

1

Если у вас есть доступ к коду, который запускает намерение, вы можете использовать putExtra(), чтобы добавить переменную в ваше намерение, которое вы позже проверите в своем методе BroadcastReceiver onReceive(). Что-то вроде:

//Intent to start an Activity 
Intent i = new Intent(this, MyActivity.class); 
String start = "Activity"; 
i.putExtra("from", start); 

//Intent to start a Service 
Intent i = new Intent(this, MyService.class); 
String start = "Service"; 
i.putExtra("from", start); 

Таким образом, в методе onReceive(), вам необходимо проверить значение строки и, таким образом, чтобы определить происхождение и назначение намерения:

@Override 
public void onReceive(Context context, Intent intent) { 
    String start = intent.getStringExtra("from"); 
    switch(start){ 
     case "Activity": 
     //Start activity 
     break; 

     case "Service": 
     //Start service 
     break; 
    } 
} 
Смежные вопросы