我有两个应用程序,称为应用程序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任务堆栈的一部分(打开任务切换器就可以解决这个问题),所以完成它只会弹出回到来电者。
我试过了:
startActivity
Intent NativeActivityManager
... {/ li>
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>