使用一个启动器在分屏中启动我的两个应用程序 - Android

Launch my two apps in split screen with one launcher - Android

在Android,我开发了两个App。我想使用一个启动器以编程方式以分屏模式启动这两个应用程序。我该怎么做?

我确实搜索了这么长时间,但从未找到任何内容来使用单个 launcher.Best 案例启动多个应用程序我得到的是在我的三星设备(s8 系列之后)支持应用程序配对(用户手动doc)

我相信 Samsung 允许它,因为他们必须支持它,因为他们有自定义 Android OS.Just 就像他们有自己的自定义上下文菜单代码和许多其他调整.

Reference gif

我找到了答案。

您可以使用辅助功能 API 来实现此类功能。它不需要任何权限。

android.accessibilityservice.AccessibilityService 具有以下 API:

service.performGlobalAction(GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN) 可用于启动分屏模式。

public List getWindows() 检查分屏模式是否打开。寻找 window 和 AccessibilityWindowInfo.TYPE_SPLIT_SCREEN_DIVIDER

您还需要在启动活动时使用意图标志。

 val options = ActivityOptionsCompat.makeBasic().toBundle()?.apply {
     putInt(
         ActivityOptionsFlags.KEY_LAUNCH_WINDOWING_MODE,
         ActivityOptionsFlags.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY
     )
     putInt(
         ActivityOptionsFlags.KEY_SPLIT_SCREEN_CREATE_MODE,
         ActivityOptionsFlags.SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT
     )
 }

 startActivities(listOf(intentBottom, intentTop).toTypedArray(), options)

使用此辅助功能 api 和意图标志,您可以实现您的目标。有关详细实施,请参阅 stavangr 的 this 存储库。

https://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html