我正在在我的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活动< ->飞溅活动< ->第二活动
- 当您从Phonepe接到电话时,启动第二个活动的结果
- 当2个活动完成时,请将结果发送回飞溅活动
- 当您从第二个活动中获得飞溅活动的结果时,将结果发送回电话
一些代码
从飞溅活动开始第二次
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
。