Android:StartActivityForResult到一个Activity但在另一个Activity中返回结果

时间:2017-06-15 08:36:35

标签: android startactivityforresult

目前,我有一个问题需要解决。

我的应用程序允许另一个应用程序(假设A)启动我的应用程序并返回结果。

申请电话:

 Intent sendIntent = 
 getPackageManager().getLaunchIntentForPackage("com.my.package");

 sendIntent.setAction(Intent.ACTION_SEND);
 sendIntent.setFlags(0);
 sendIntent.putExtra("amount", "20000");
 startActivityForResult(sendIntent, 1);

然后我的应用程序将启动MainActivity 但是,为了获得结果并发回给应用程序A,我必须开始另一个活动,让我们说:

 MainActivity -> Activity B -> Activity C --> Activity D.

结果可以从活动C或活动D返回到应用程序A.

注意:我不能使用标志FLAG_ACTIVITY_FORWARD_RESULT,因为从B到C,我调用了“startActivityForResult”。 (startActivityForResult和标志FLAG_ACTIVITY_FORWARD_RESULT无法一起进行)。

您能否告诉我如何实现这一目标?
非常感谢。

2 个答案:

答案 0 :(得分:0)

要获取结果,您可以从MainActiviy调用活动B,然后转到活动C,然后转到D

如果你想要回来你应该逐个完成并完成每个活动并在onActivityResult中设置结果。

如果你应该回到主要活动,请这样做:

    //in MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent intent = new Intent(MainActivity.this, ActivityB.class);
    startActivityForResult(intent, REQUEST_CODE_MAIN_ACTIVITY);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == REQUEST_CODE_MAIN_ACTIVITY && resultCode == RESULT_OK){
        //maybe get back to application that called you 
    }
}

//in Second activity
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_B);
    Intent intent = new Intent(ActivityB.this, ActivityC.class);
    startActivityForResult(intent, REQUEST_CODE_ACTIVITY_B);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == REQUEST_CODE_ACTIVITY_B && resultCode == RESULT_OK){
        setResult(RESULT_OK);
        finish();
    }
}

如果您可以直接从活动D调用第一个应用程序 您可以拨打第一个应用程序并关闭第二个应用程序

答案 1 :(得分:0)

从第一个Activity调用第二个Activity,使用startActivityForResult()方法

nohup shred -n 2 "device name" & >success.out 2>failure.out

如果要发回数据,请在第二个活动中:

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

如果您不想返回数据:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

现在,在第一个Activity类中,为onActivityResult()方法编写以下代码。

Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();