You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API 30及以上设备onConfigurationChanged未调用致APP无法旋转

Android 11+ 应用旋转失效且onConfigurationChanged未触发问题解决

问题根源

你的Manifest中application标签设置了android:resizeableActivity="false",在Android 11(API 30)及以上版本,这个属性会改变系统对窗口配置变化的处理逻辑:即使Activity声明了android:configChanges,系统也不会触发onConfigurationChanged,而是直接阻止横竖屏切换。

可行解决方案

1. 全局开启可调整Activity尺寸

将application标签内的android:resizeableActivity="false"改为true,或直接移除该属性(默认值为true):

<application
    android:name="com.midea.ConnectApplication"
    android:allowBackup="false"
    android:icon="@drawable/ic_launcher"
    android:label="@string/connect"
    android:persistent="true"
    android:resizeableActivity="true" <!-- 修改此处 -->
    android:supportsRtl="false"
    android:theme="@style/AppStyle"
    android:usesCleartextTraffic="true"
    android:requestLegacyExternalStorage="true"
    tools:replace="android:icon,android:theme,android:label,android:allowBackup,android:persistent,android:supportsRtl">

2. 仅给需要旋转的Activity开启可调整尺寸

如果不想全局修改,可以在目标Activity(比如你的ModuleWebActivity)标签中单独添加android:resizeableActivity="true",覆盖全局配置:

<activity
    android:name="com.midea.activity.ModuleWebActivity"
    android:configChanges="orientation|keyboardHidden|screenSize|layoutDirection|screenLayout"
    android:theme="@style/ModuleWebTheme"
    android:resizeableActivity="true"> <!-- 添加此处 -->
    <intent-filter>
        <action android:name="${applicationId}.ModuleWebActivity" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

3. 额外检查项

  • 确认设备系统的自动旋转功能已开启,部分厂商可能提供应用级旋转权限控制
  • 确保目标Activity未设置android:screenOrientation固定方向(你的主Activity无此设置,可忽略)
  • 若使用WebView,检查WebView初始化代码中是否有锁定方向的逻辑

验证步骤

修改后重新构建应用,在API30+设备上测试旋转操作,确认onConfigurationChanged方法被调用,界面正常跟随旋转。

内容的提问来源于stack exchange,提问作者user25031347

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:24:51