Android 12 分屏模式配置

在Pad项目中遇到问题,不支持分屏的应用由于Android12L系统的配置,默认强制分屏导致显示异常。系统在config.xml中配置了分屏模式,参数`config_supportsNonResizableMultiWindow`默认为0,当设备屏幕尺寸超过特定阈值时,应用会被认为支持分屏。将此值改为-1可以避免对不支持分屏的apk进行分屏,从而解决异常问题。
摘要由CSDN通过智能技术生成
问题背景

在做pad项目时,发现很多不支持分屏的应用都被分屏了。导致各种显示异常的bug。

问题分析

1、反编译apk发现,apk本身是不支持分屏的。被系统强制分屏了
2、和客户研发沟通,发现是Android 12L的新特性。
frameworks\base\core\res\res\values\config.xml中配置了分屏的模式

    <!-- Whether the device supports non-resizable activity in multi windowing modes.
         -1: The device doesn't support non-resizable in multi windowing modes.
          0: The device supports non-resizable in multi windowing modes only if this is a large
             screen (smallest width >= {@link config_largeScreenSmallestScreenWidthDp}).
          1: The device always supports non-resizable in multi windowing modes.
    -->
    <integer name="config_supportsNonResizableMultiWindow">0</integer>

默认配置0,当设备尺寸大于config_largeScreenSmallestScreenWidthDp时,就默认应用支持分屏。
改为-1就好了。会根据apk是否支持分屏判断

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android 12中使用代码实现分屏启动,您可以按照以下步骤进行操作: 1. 检查分屏模式是否被支持: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { // 分屏模式被支持 } else { // 分屏模式不被支持 } ``` 2. 启动第一个应用程序: ```java Intent firstAppIntent = getPackageManager().getLaunchIntentForPackage("com.example.firstapp"); startActivity(firstAppIntent); ``` 3. 启动第二个应用程序并进入分屏模式: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { Intent secondAppIntent = getPackageManager().getLaunchIntentForPackage("com.example.secondapp"); secondAppIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(secondAppIntent); } ``` 注意,上述代码中的`"com.example.firstapp"`和`"com.example.secondapp"`是示例应用程序的包名,请根据您实际的应用程序包名进行替换。 4. 调整分屏比例(可选): ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { setMinimalSize(0.5f); // 将分屏比例设置为50% } ``` 可以使用`setMinimalSize()`方法来设置两个应用程序之间的分割线位置,从而调整分屏比例。参数是一个0到1之间的浮点数,表示分割线位置的相对比例。 请注意,上述代码中的分屏启动相关的API是在Android 12(API级别31)引入的,并且只在支持分屏模式的设备上有效。在旧版本的Android上,这些API可能不可用或不起作用。此外,确保在您的AndroidManifest.xml文件中声明了所需的权限和配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值