使用 phonegap 3.1 我试图在设备准备好时隐藏启动屏幕:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
navigator.splashscreen.hide();
}
但它返回:
无法调用未定义的方法“隐藏”
navigator 对象不包括 splashscreen 属性。
我已经在 phonegap 2.9 上尝试过,它工作正常。
经过研究和实验,这是我们必须做的才能让它发挥作用:
cordova plugin add org.apache.cordova.splashscreen
cordova build
然后,cordova build 将错误的行添加到 config.xml - 所以我们必须将其更改为以下内容:
<feature name="SplashScreen">
<param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
</feature>
在你的主要活动中
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.setIntegerProperty("splashScreenDelay", 10000); //time to display the splash
最后,我们已经能够使用hide来自 javascript 的方法。
您是否使用 CLI 添加SplashScreen 插件?您必须添加插件$ cordova plugin add org.apache.cordova.splashscreen(将插件代码从 plugins.cordova.io 复制到 /yourApp/plugins/org.apache.cordova.splashscreen/ 然后稍后cordova build将插件代码复制到适当的平台位置。
如果您正在使用 phonegap 构建,而不是做
cordova plugin add ...
从命令行,您需要将插件和功能添加到config.xml:
<gap:plugin name="org.apache.cordova.splashscreen" />
<feature name="SplashScreen">
<param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
<param name="ios-package" value="CDVSplashScreen" />
</feature>
我唯一能猜到的就是仔细检查你<script type="text/javascript" charset="utf-8" src="cordova.js"></script>的 HTML 头部是否有调用该 JS 的内容。对不起,还没有搞砸3.1。
添加这个:
<preference name="SplashScreen" value="splash.png" />
<preference name="SplashScreenDelay" value="3000" />
navigator.splashscreen.hide() 对我也不起作用。
更新: navigator.splashscreen.hide() 仅在在线构建时有效(phonegap build)。
升级到 Phonegap Desktop 0.3.6 后,我遇到了类似的问题,我的一个旧应用程序卡在了初始屏幕上。在配置窗口中,它显示了正确的应用程序名称和版本,并且在我修改 config.xml 时它正在更新。在控制台中我只有一个错误:500对于http://localhost:3000/cordova_plugins.js
一个新的应用程序运行良好。
我尝试了以上所有方法:
cordova.jsand添加cordova_plugins.js到index.html. 这不再是必要的了,因为很多版本以前 - 构建为您完成。platforms/android/assets/www文件夹中有cordova.js和cordova_plugins.js文件存在config.xml有指定<content src="index.html" />最后解决我的问题是完全删除platforms文件夹并cordova platform add android再次运行。我想在每次 Phonegap 升级后这样做是安全的。