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

Faw*_*nov 12 android

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

ρяσ*_*я K 20

试着:

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);
Run Code Online (Sandbox Code Playgroud)

并在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
        }
Run Code Online (Sandbox Code Playgroud)

使用putExtra从每个活动发送的唯一键,以确定从哪个活动意图接收


Sam*_*Sam 5

您没有提供任何上下文,因此这是一种通用方法。

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

intent.putExtra("Source", "from BroadcastReceiver");
Run Code Online (Sandbox Code Playgroud)

并使用:

String source = getIntent().getStringExtra("Source");
Run Code Online (Sandbox Code Playgroud)