【问题标题】:android - launch an activity of another app to get it's resultandroid - 启动另一个应用程序的活动以获得它的结果
【发布时间】:2013-04-25 19:02:01
【问题描述】:

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

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

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

【问题讨论】:

标签: android android-intent android-activity launch


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 如何从中得到结果?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多