我能在onActivityResult回调中获取原始请求数据(意图额外信息)吗?

8

好奇,如果我可以调用一些第三方活动,并在onActivityResult中读取我的原始意图数据。

1个回答

3

这对我来说没有任何意义,真的...不管怎样,由于onActivityResult将始终是启动第三方活动的同一Activity的一部分,因此您只需在活动中某处保存该数据即可。例如:

private Intent intentForThat3rdPartyActivity = null; // long name, huh?

public void hereYouLaunchThings(){
    if( intentForThat3rdPartyActivity == null ){
        intentForThat3rdPartyActivity = new Intent(YourActitity.this, The3rdPartyActivity.class);
        intentForThat3rdPartyActivity.putExtra("weird", "data");
    }
    startActivityForResult(intentForThat3rdPartyActivity, 9999);
}

@Override
protected void onActivityResult(int requestCode, int resultCode,
                                 Intent data) {
    // this should have the same data you passed
    String foo = intentForThat3rdPartyActivity.getStringExtra("weird");
}

我知道,你可以说这很罕见,但是在第三方完成并调用onActivityResult之前,托管我的活动的进程可能会被终止。如果发生这种情况,intentForThat3rdPartyActivity将为null。 - alex2k8
1
可能我应该将信息保存到savedInstanceState中,但是如果不需要额外的代码就能获取原始意图会更好 :-) - alex2k8
1
是的,如果是这种情况,你别无选择,只能把数据保存在“savedInstanceState”中。 - Cristian
或者如果您控制两端,即调用方和接收方活动,则可以将数据作为结果的数据通过意图传递回去。 - Moncader
除非被调用的活动执行类似于此的操作,通过发送意图来将意图返回 setResult(RESULT_OK, getIntent()),否则无法获取原始意图额外信息。 - alex2k8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接