SetResult()回到深链接中的呼叫活动



我正在在我的Android应用程序中实现深链接。假设我正在使用Phonepe进行付款,然后使用其他应用程序选择付款并选择我的应用程序。

Intent intent = new Intent().
intent.setData("the data");
startactivityforresult(intent, 111);

然后用户选择我的应用程序和飞溅屏幕,然后去做其他活动

Intent i = new Intent(Splashscreen.this, FirstActivity.class);
startactivity(i);
finish();

然后,这样的其他活动 -

Intent i2 = new Intent(FirstActivity.this, SecondActivity.class);
startactivity(i2);
finish();

第二次,我将结果发送回呼叫活动,或者在这里将结果发送到这样的电话 -

Intent backintent = new Intent();
backintent.putExtra("somekey", "somevalue");
setResult(Result.OK, backintent);

现在,当我的应用程序关闭并返回音素时,PhonePe收到的数据为null。

但是,如果我在其他只有一个活动的应用程序中做同样的事情,那么呼叫活动捕获的数据并非效果且正常工作。

我想知道如何将数据发送回呼叫活动。如果数据仅在相同的应用程序

中,我可以发送数据。

开始活动时我必须使用其他标签吗?

您还需要使用startActivityForResult方法启动任何新活动,然后用setResult调用链回来,将其转回onActivityResult,然后使用setResult进行设置。

更详细的描述

我们必须以startActivityForResult的启动活动。顾名思义,您将返回您的某种结果。此结果将来自您从这里启动的另一项活动。

eg: mainActivity class

   Intent intent=new Intent(MainActivity.this,SecondActivity.class);  
            startActivityForResult(intent, 2);// Activity is started with requestCode 2  

onActivityResult方法内获取结果。

// Call Back method  to get the Message form other Activity  
    @Override  
       protected void onActivityResult(int requestCode, int resultCode, Intent data)  
       {  
                 super.onActivityResult(requestCode, resultCode, data);  
                  // check if the request code is same as what is passed  here it is 2  
                   if(requestCode==2)  
                         {  
                            String message=data.getStringExtra("MESSAGE");   
                            textView1.setText(message);  
                         }  

第二级班级

将此活动的结果发送到您启动的先前活动。

  Intent intent=new Intent();  
                intent.putExtra("MESSAGE", "your message");  
                setResult(2,intent);  
                finish();//finishing activity  

您只能将结果发送回活动, startActivityForresult 称为

在您的情况下,如下

电话活动活动 ->飞溅活动 ->第二活动 -> Phonepe活动

一个startActivityForresult不足以使您的情况不足,因为如果您想发送数据,请致电您的飞溅活动,您必须从Splash Activity发送,而不是从第二个活动发送

或使用此技巧

phonepe活动< ->飞溅活动< ->第二活动

  1. 当您从Phonepe接到电话时,启动第二个活动的结果
  2. 当2个活动完成时,请将结果发送回飞溅活动
  3. 当您从第二个活动中获得飞溅活动的结果时,将结果发送回电话

一些代码
从飞溅活动开始第二次

Intent intent=new Intent(SplashActivity.this,SecoundActivity.class);
    intent.putExtra("SomeKey","SomeValue");
    startActivityForResult(intent,REQUEST_CODE);

处理溅起活动的结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    setResult(requestCode,data);
}

在您的第二项活动中以寄回结果
如果操作完成

setResult(Activity.RESULT_OK,data);


如果操作失败

setResult(Activity.RESULT_CANCELED,data);



注意

第二个活动将结果发送回飞溅活动,并从Splash Activity发出相同的结果

startActivityForResult更改为 onActivityResult

最新更新