Flutter WebView在小米设备被强制暗黑模式,配置forceDarkAllowed无效如何解决
小米设备WebView强制暗黑模式适配解决方案
你已配置的全局forceDarkAllowed未生效是MIUI的特有底层逻辑导致的,MIUI对WebView的暗黑强制适配走单独的控制开关,可按以下步骤逐步配置解决:
1. 新增WebView专属暗黑控制配置
在android/app/src/main/res/xml/目录下新建webview_config.xml文件(目录不存在则先手动创建),内容如下:
<?xml version="1.0" encoding="utf-8"?> <webview> <dark-mode>false</dark-mode> </webview>
2. 清单文件新增元数据配置
打开android/app/src/main/AndroidManifest.xml,在<application>标签下添加如下配置:
<meta-data android:name="android.webkit.WebView.EnableDarkMode" android:value="false" /> <meta-data android:name="android.webkit.WebView.ForceDarkMode" android:value="false" />
3. WebView初始化时动态关闭强制暗黑
如果你是自定义原生WebView,在初始化阶段添加如下代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { webView.getSettings().setForceDark(WebSettings.FORCE_DARK_OFF); } // 适配小米特有API try { Method method = WebView.class.getMethod("setForceDarkAllowed", boolean.class); method.invoke(webView, false); } catch (Exception e) { // 非小米设备无该方法,直接忽略异常 }
如果是Flutter项目使用webview_flutter插件,可升级到4.0+版本,该版本已内置小米WebView暗黑适配逻辑,也可以自行通过平台通道调用上述原生代码执行。
4. H5端兜底适配
如果上述原生配置仍不生效,在WebView加载的H5页面head标签中添加如下meta标签:
<meta name="color-scheme" content="light"> <meta name="supported-color-schemes" content="light">
所有配置修改完成后需卸载原有应用重装,避免MIUI缓存旧配置导致生效失败。
内容的提问来源于stack exchange,提问作者abdelfattah Hilmi
相关产品推荐
相关产品推荐

