我有两个应用程序,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();
如果我在同一个应用中执行上述操作,则按预期工作。
然而,由于它有两个不同的应用程序,我收到一个空的意图,没有数据和未设置的结果代码。我应该如何编辑以上内容以确保始终保持一个意图?
答案 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);