我的两个 Android 应用程序在平板电脑上以多窗口模式运行;应用 1 和应用 2。App1 是焦点,我从 App1 向 App2 发送广播。在那里,我使用 startActivity 在外部打开了一个 web url。但是该 Web URL 在 App1 而不是 App2 中打开,因为 App1 是焦点。虽然我从 App2 启动了网址。
我想在 App2 中打开网址。所以我可能需要先让 App2 关注我的代码?怎么做?
我的两个 Android 应用程序在平板电脑上以多窗口模式运行;应用 1 和应用 2。App1 是焦点,我从 App1 向 App2 发送广播。在那里,我使用 startActivity 在外部打开了一个 web url。但是该 Web URL 在 App1 而不是 App2 中打开,因为 App1 是焦点。虽然我从 App2 启动了网址。
我想在 App2 中打开网址。所以我可能需要先让 App2 关注我的代码?怎么做?
按照文档,您可以要求 Android 在相邻的焦点窗口中使用. FLAG_ACTIVITY_LAUNCH_ADJACENT
例子:
Intent intent = new Intent(getActivity(), Browser.class);
intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);
getActivity().startActivity(intent);
文档摘录:
当您启动一个新活动时,您可以向系统提示,如果可能的话,新活动应该与当前活动相邻显示。为此,请使用意图标志 FLAG_ACTIVITY_LAUNCH_ADJACENT。传递此标志请求以下行为:
- 如果设备处于分屏模式,系统会尝试在启动它的 Activity 旁边创建新 Activity,因此这两个 Activity 共享屏幕。系统不能保证能够做到这一点,但如果可能的话,它会使活动相邻。
- 如果设备未处于分屏模式,则此标志无效。
- 如果设备处于自由模式并且您正在启动一个新活动,您可以通过调用ActivityOptions.setLaunchBounds()指定新活动的尺寸和屏幕位置. 如果设备不处于多窗口模式,此方法无效。
注意:如果您在任务堆栈中启动一个活动,该活动将替换屏幕上的活动,并继承其所有多窗口属性。如果要在多窗口模式下将新活动作为单独的窗口启动,则必须在新的任务堆栈中启动它。