java - 启动两个应用程序,Android nougat

标签 java android

我想为 android nougat 创建一个应用程序,当我单击一个按钮时,我会在同一时刻在同一屏幕上启动两个应用程序。 我想使用Android 7的这个新功能,可以吗?

最佳答案

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

android.accessibilityservice.AccessibilityService 有以下 api:

service.performGlobalAction(GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN)您可以使用它来启动分屏模式。

public List<AccessibilityWindowInfo> getWindows ()检查分屏模式是否打开。寻找带有 AccessibilityWindowInfo.TYPE_SPLIT_SCREEN_DIVIDER 的窗口

启动 Activity 时,您还需要使用 Intent 标志。

 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 和 Intent 标志,您可以实现您的目标。咨询this stavangr 的 repo 以了解详细实现。

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

关于java - 启动两个应用程序,Android nougat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330931/

相关文章:

带抽屉导航的工具栏上的 Android 'back' 操作

android - 您可以在 Google Play 商店中为您的商品详情保存草稿吗?

android - 相对布局 - android :layout_centerHorizontal ="true" AND android:gravity ="center_horizontal" showing unexpected results

java - 连接移动网络时如何获取连接速度?

Silverlight 中的 Java?

java - 调用 super.super.method,跳过 super.method

java - 从 Java 导入到 C++ 包括

安卓和 map v2 : how do I get the users location?

android - 在 react-native android 项目中,如何将文件夹从 Assets 复制到 DocumentDirectoryPath?

java - 选择文本包含斜杠的 Jsoup 元素