通过检查intent来运行startActivity / startService

时间:2015-07-27 19:03:30

标签: android android-intent

我有一个设置,其中BroadcastReceiver接收可能旨在启动服务或活动的意图。有没有我可以检查意图并决定是否使用startActivity或startService?服务意图将是显式的,并且将使用服务名称进行初始化。

1 个答案:

答案 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;
    }
}