如何检查哪个Intent启动了活动?

时间:2012-07-17 19:30:45

标签: android

我有很多活动。他们中的每一个都有一个意图,它指的是同一个活动。有没有办法找出哪个意图开始活动?

3 个答案:

答案 0 :(得分:19)

尝试:

Intent intent = new Intent();  
intent.setClass(A.this,Receiveractivity.class);
intent.putExtra("Uniqid","From_Activity_A");  
A.this.startActivity(intent);

Intent intent = new Intent();  
intent.setClass(B.this,Receiveractivity.class);
intent.putExtra("Uniqid","From_Activity_B");  
B.this.startActivity(intent);

Intent intent = new Intent();  
intent.setClass(C.this,Receiveractivity.class);
intent.putExtra("Uniqid","From_Activity_C");  
C.this.startActivity(intent);

并在主要活动的onCreate中:

//obtain  Intent Object send  from SenderActivity
 Intent intent = this.getIntent();

  /* Obtain String from Intent  */
        if(intent !=null)
        {
        String strdata = intent.getExtras().getString("Uniqid");
         if(strdata.equals("From_Activity_A"))
         {
         //Do Something here...
         }
         if(strdata.equals("From_Activity_B"))
         {
         //Do Something here...
         }
         if(strdata.equals("From_Activity_C"))
         {
         //Do Something here...
         }
         ........
        }
        else
        {
            //do something here
        }

使用putExtra从每个活动中发送唯一键以识别从哪个活动意图接收

答案 1 :(得分:4)

您没有提供任何背景信息,因此这是一种通用方法。

在每个Intent类型中添加一个额外的内容,如唯一的int或String:

intent.putExtra("Source", "from BroadcastReceiver");

并使用:

String source = getIntent().getStringExtra("Source");

答案 2 :(得分:4)

我找到的解决方案并不涉及将数据从一个Activity传递到另一个Activity。

在您的通话活动中使用startActivityForResult启动活动:

ActivityCompat.startActivityForResult(this, new Intent(this, MyActivity.class), 0, null);

在被调用者活动中,您可以使用以下代码来检测调用活动。

    if (getCallingActivity() != null) {
        Log.d(TAG, getCallingActivity().getClassName());
    }

希望这会有所帮助。欢呼声。