我有一个设置,其中BroadcastReceiver接收可能旨在启动服务或活动的意图。有没有我可以检查意图并决定是否使用startActivity或startService?服务意图将是显式的,并且将使用服务名称进行初始化。
答案 0 :(得分:1)
如果您有权访问启动Intent的代码,则可以使用putExtra()
向Intent添加变量,稍后您将在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;
}
}