以编程方式在分屏中打开应用程序

Koe*_*ren 5 java android android-intent split-screen-multitasking android-7.0-nougat

如何在 android N (SDK 24) 中分屏打开另一个应用程序?

在文档中我发现了这一点:


以多窗口模式启动新活动

当您启动一项新活动时,您可以提示系统新活动应显示在当前活动旁边(如果可能)。为此,请使用标志 Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT。传递此标志请求以下行为:

如果设备处于分屏模式,系统会尝试在启动它的 Activity 旁边创建新 Activity,以便这两个 Activity 共享屏幕。系统不保证能够做到这一点,但如果可能的话,它会使活动相邻。如果设备未处于分屏模式,则此标志无效。如果设备处于自由格式模式并且您要启动新活动,则可以通过调用 ActivityOptions.setLaunchBounds() 指定新活动的尺寸和屏幕位置。如果设备不处于多窗口模式,则此方法无效。


所以当我尝试这个时,该Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT标志不存在。我安装了

  • Android 6.x (N) SDK 24 修订版 1
  • Android N 预览版 SDK N 修订版 3
  • Android 6.0(棉花糖)SDK 23 修订版 3

这是我的等级:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "PACKAGENAME"
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 2
        versionName "2.4.1"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:design:24.0.0'
    compile 'org.jsoup:jsoup:1.8.3'
    compile 'com.android.support:support-v4:24.0.0'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'
}
Run Code Online (Sandbox Code Playgroud)

Yaz*_*006 2

首先,应用程序应针对 SDK 24+ 版本。如果它的目标版本低于 24 SDK,则分屏模式将无法工作。然后仔细阅读这里这里

如果设备处于分屏模式,系统会尝试在启动它的 Activity 旁边创建新 Activity,以便这两个 Activity 共享屏幕。系统不保证能够做到这一点,但如果可能的话,它会使活动相邻。

该标志仅在分屏多窗口模式下使用。新活动将显示在启动它的活动旁边。这只能与 FLAG_ACTIVITY_NEW_TASK 结合使用。此外,如果您想要创建现有活动的新实例,则需要设置 FLAG_ACTIVITY_MULTIPLE_TASK。

这意味着您无法以编程方式启动分屏模式。如果您已经处于分屏模式,您可以尝试在屏幕的另一部分启动活动。