Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为结果启动外部活动并返回到请求活动_Android_Android Intent_Android Activity - Fatal编程技术网

Android 为结果启动外部活动并返回到请求活动

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

我有两个应用程序,分别称为app 1和app 2,我正在app 1中启动app 2中的一个活动以获取结果

应用程序2中的活动应用了一个
活动别名
,因此我可以添加一个操作(用于启动它),并且需要签名级别权限(与应用程序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活动上启用任务重新租用
  • startActivity
    Intent上的标志归零
  • 确保应用程序2的活动不会尝试启动任何其他活动
  • 跟踪整个活动生命周期以查看发生了什么,但所有跟踪都会在
    NativeActivityManager
    处停止
  • 清除应用程序2已打开的任何现有任务
  • 使用
    finishafinity
    完成应用程序2的活动(返回结果时不起作用)
所有这些似乎都没有效果。许多意图标志和启动模式在启动结果时是不允许的,所以我不知道下一步该怎么做

谢谢

以下是清单中的
定义,以备不时之需:

<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>