android - 启动另一个应用程序的活动以获得它的结果

时间:2013-04-25 19:02:01

标签: android android-intent android-activity launch

我有两个应用程序,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();

如果我在同一个应用中执行上述操作,则按预期工作。

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

2 个答案:

答案 0 :(得分:3)

解决方案在相关问题“Android onActivityResult triggered before activity even starts!”中提供。以这种方式创建意图:

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

我遇到了同样的问题,并以这种方式解决了。

答案 1 :(得分:3)

使用setFlags(0)清除getLaunchIntentForPackage可以创建的所有标记:

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