Android 为结果启动外部活动并返回到请求活动
我有两个应用程序,分别称为app 1和app 2,我正在app 1中启动app 2中的一个活动以获取结果 应用程序2中的活动应用了一个Android 为结果启动外部活动并返回到请求活动,android,android-intent,android-activity,Android,Android Intent,Android Activity,我有两个应用程序,分别称为app 1和app 2,我正在app 1中启动app 2中的一个活动以获取结果 应用程序2中的活动应用了一个活动别名,因此我可以添加一个操作(用于启动它),并且需要签名级别权限(与应用程序1共享) 用于从应用程序1启动应用程序2活动的代码很简单: Intent startActivity = new Intent(MY_CUSTOM_ACTION); startActivity.setPackage(APP2_PACKAGE); startActivity.putExt
活动别名
,因此我可以添加一个操作(用于启动它),并且需要签名级别权限(与应用程序1共享)
用于从应用程序1启动应用程序2活动的代码很简单:
Intent startActivity = new Intent(MY_CUSTOM_ACTION);
startActivity.setPackage(APP2_PACKAGE);
startActivity.putExtra(EXTRA_SOME_PARAM, ...);
startActivityForResult(startActivity, 1234);
这将导致活动按预期显示。然后我获得一些用户输入,并清理应用程序2的活动,如下所示:
setResult(Activity.RESULT_OK, someData);
finish();
我期望发生的是,将应用程序1中的调用活动恢复到前台,从而调用onActivityResult
,但实际发生的是,应用程序2的主/启动活动被启动
有时我会收到带有正确响应代码和数据的onActivityResult
回调,但app1的活动仍然停止
我对安卓的理解让我相信,应用2的活动应该是应用1任务堆栈的一部分(打开任务切换程序就证明了这一点),因此完成它后,调用方会立即返回
我试过:
- 在app 2活动上启用任务重新租用
- 将
Intent上的标志归零startActivity
- 确保应用程序2的活动不会尝试启动任何其他活动
- 跟踪整个活动生命周期以查看发生了什么,但所有跟踪都会在
处停止NativeActivityManager
- 清除应用程序2已打开的任何现有任务
- 使用
完成应用程序2的活动(返回结果时不起作用)finishafinity
定义,以备不时之需:
<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>