10

我有两个应用程序,A 和 B。

从 A 开始,我使用以下代码启动 B 以获得结果:

Intent fmIntent = getPackageManager().getLaunchIntentForPackage("com.example.B");
fmIntent.putExtra("hello", "world");
startActivityForResult(fmIntent, REQUEST_TEST);

从 B 开始,我正在执行以下操作:

getIntent().putExtra("completed", true);
setResult(RESULT_OK, getIntent());
finish();

如果我对同一个应用程序中的活动执行上述操作,它会按预期工作。

但是,由于它是两个不同的应用程序,我收到一个没有数据的空意图和一个未设置的结果代码。我应该如何编辑上述内容以确保始终保持一个意图?

4

2 回答 2

6

用于setFlags(0)清理可以由以下人员创建的所有标志getLaunchIntentForPackage

Intent fmIntent = getPackageManager().getLaunchIntentForPackage("com.example.B");
fmIntent.setFlags(0);
fmIntent.putExtra("hello", "world");
startActivityForResult(fmIntent, REQUEST_TEST);
于 2015-11-30T11:28:27.097 回答
4

相关问题“ Android onActivityResult 在活动开始之前触发! ”中提供了解决方案。以这种方式创建意图:

Intent myIntent = new Intent();
myIntent.setClassName("com.example.B", "com.example.B.ActivityB");
startActivityForResult(myIntent, 600);

我面临同样的问题并以这种方式解决。

于 2015-02-08T23:51:34.933 回答