cordova-android@11.0.0中navigator.splashscreen.hide()无法正常工作
Cordova-Android 11.0.0(API 31)手动隐藏启动屏失效的解决方案
确认启动屏插件版本兼容性
必须使用适配cordova-android 11的最新版cordova-plugin-splashscreen(至少v6.0.0+),旧版本和新Android平台存在兼容问题。执行以下命令更新:cordova plugin remove cordova-plugin-splashscreen cordova plugin add cordova-plugin-splashscreen@latest修正config.xml的Android专属配置
除了全局设置AutoHideSplashScreen=false,还要给Android平台添加针对性配置,同时设置足够长的超时时间避免系统自动隐藏:<platform name="android"> <preference name="AutoHideSplashScreen" value="false" /> <preference name="SplashScreenDelay" value="30000" /> <!-- 设为远大于实际手动隐藏时间的值,比如30秒 --> <preference name="SplashScreen" value="screen" /> <preference name="SplashMaintainAspectRatio" value="true" /> </platform>确保手动隐藏代码的执行时机
必须在deviceready事件触发后再调用隐藏方法,同时等待UI渲染完成:document.addEventListener('deviceready', function() { // 根据实际UI加载情况调整延迟,确保页面渲染完成 setTimeout(function() { navigator.splashscreen.hide(); }, 1000); }, false);如果有异步操作(比如接口请求),要等这些操作完成后再执行隐藏。
检查Android原生主题配置
cordova-android 11用了AndroidX的SplashScreen API,需要确认res/values/styles.xml中的启动屏主题配置正确:<style name="AppTheme.NoActionBarLaunch" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowSplashScreenAnimatedIcon">@mipmap/splash</item> <item name="android:windowSplashScreenBackground">@color/splash_background</item> <item name="android:windowSplashScreenAnimationDuration">0</item> <!-- 关闭系统默认过渡,避免干扰手动操作 --> </style>同时确认
AndroidManifest.xml中启动Activity使用的是该主题。调试验证方法调用
在隐藏方法前后添加日志,通过Chrome远程调试(chrome://inspect)查看是否执行:console.log('准备隐藏启动屏'); navigator.splashscreen.hide(); console.log('已调用隐藏启动屏方法');检查是否存在
navigator.splashscreen未定义或其他报错。
内容的提问来源于stack exchange,提问作者srkleiman
相关产品推荐
相关产品推荐

