启动结果的外部活动并返回请求活动

时间:2016-01-15 16:31:13

标签: android android-intent android-activity

我有两个应用程序,称为应用程序1和应用程序2,我正在应用程序1中的应用程序2中启动活动以获得结果。

应用2中的活动已应用activity-alias,因此我可以添加操作(用于启动它),并且需要签名级权限(与应用1共享)。

用于从app 1启动app 2活动的代码很简单:

Intent startActivity = new Intent(MY_CUSTOM_ACTION);
startActivity.setPackage(APP2_PACKAGE);
startActivity.putExtra(EXTRA_SOME_PARAM, ...);
startActivityForResult(startActivity, 1234);

这会导致活动按预期显示。然后我得到一些用户输入,并清理app 2的活动:

setResult(Activity.RESULT_OK, someData);
finish();

我期待发生的事情是,将应用1中的呼叫活动恢复到前台,然后调用onActivityResult,但实际发生的是app 2的主要内容/启动/启动活动。

有时我会使用正确的响应代码和数据获得onActivityResult回调,但app 1的活动仍然停止。

我对Android的理解让我相信app 2的活动会成为app 1任务堆栈的一部分(打开任务切换器就可以解决这个问题),所以完成它只会弹出回到来电者。

我试过了:

  • 在app 2活动上启用任务重新显示
  • startActivity Intent
  • 上的标记清零
  • 确保应用2的活动不会尝试启动任何其他活动
  • 追踪活动生命周期,看看发生了什么,但所有路径都在NativeActivityManager ... {/ li>
  • 清除app 2已打开的所有现有任务
  • 使用finishAffinity完成应用2的活动(返回结果时不起作用)

这些似乎都没有效果。在开始结果时,许多Intent标志和启动模式都是不允许的,所以我不知道接下来要尝试什么。

谢谢!

以下是清单中的<activity>定义,以防万一:

<activity
    android:name=".activity.App2Activity"
    android:windowSoftInputMode="adjustResize"
    android:configChanges="locale"
    android:theme="@style/Some.Theme"
    android:allowTaskReparenting="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity-alias
    android:name=".activity.App2ActivityAlias"
    android:permission="x.y.z.MY_CUSTOM_PERMISSION"
    android:targetActivity=".activity.App2Activity"
    android:exported="true">

    <intent-filter>
        <action android:name="x.y.z.MY_CUSTOM_ACTION"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>

</activity-alias>

0 个答案:

没有答案