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
相关产品推荐
相关产品推荐

