加载phonegap网站后在android上隐藏启动画面

Posted

技术标签:

【中文标题】加载phonegap网站后在android上隐藏启动画面【英文标题】:Hide splash screen on android once phonegap site has loaded 【发布时间】:2012-10-03 16:54:46 【问题描述】:

我有一个使用媒体查询在手机上看起来不错的网站,我将它封装在 phonegap 中,这样我也可以将它作为应用程序使用。我已将 super.loadUrl 设置为我的网站,并且这可以正常工作,我也有一个工作启动画面,我想在网站加载之前跟上它。我遇到了this blog post 并按照说明进行操作。如果我是 index.html(应用程序主页)的 super.loadUrl,但如果我 loadUrl 的实际网站则不行。

启动画面代码(主java文件)

super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl("My External Site Url", 20000);

Index.html 代码(如果我将 URL 加载到它,这可以工作,但我想将 URL 加载到我的站点)

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() 
    navigator.splashscreen.hide();

但是,当我在我的外部 html 文件中使用上述代码(并包含 cordova.js)时,它无法识别 onDeviceReady,因此启动屏幕不会自行隐藏,我会等待 20 秒。

我错过了什么吗?我什至可以从外部 html 文件(例如,未内置到应用程序中的文件)中使用 onDeviceReady,还是应该这样工作而我只是引用了cordova 错误?

【问题讨论】:

嘿,安迪,我们必须弄清楚为什么您没有收到 deviceready 事件。如果您没有收到该事件,您将无法隐藏启动画面。当您尝试从远程位置加载它时,您在“adb logcat”中看到了什么? 嗨 Simon,我不确定这是否是您需要的,但我通过 AVD 运行了它,并将其放入 LogCat 选项卡中:pastebin.com/vRwBXENh 如果有帮助,当我执行 alert('navigator: ' + navigator + '\nsplashscreen: ' + navigator.splashscreen); 时(通过我的外部 html 文件上的浏览器,在包含 Cordova 之后)我得到 navigator: [object Navigator], splashscreen: undefined 但我的手机或模拟器没有收到警报,还没有 是的,您永远不会收到 deviceready 事件,因此 PhoneGap 未成功加载。这就是 navigator.splashscreen 未定义的原因。您的 JS 中有一个错误,您可以在日志“192.168.1.4:8080/IntDemo/js/jquery.plugin.js: Line 13 : Uncaught TypeError: Cannot read property 'oSort' of undefined”中看到该错误,您可能应该先修复它。除此之外,如果您可以发布您的 html 以确保您已正确设置。 在登录页面:pastebin.com/cpLgU7fB 中,javascript 引用绝对有效,因为当我查看源代码并单击它时,cordova 会打开。至于 javascript 错误,我知道这一点,并且已经有一段时间了,需要解决它,但我认为它不会影响它 【参考方案1】:

原来prototype.js 的一个旧包含把这搞砸了。一旦我删除它,它就非常有效。

对于未来的人,我得到的错误是:

应用对触摸没有反应,无法使用输入按钮和超链接。 如果您按住输入、超链接等,它会显示橙色焦点框,但从未将我带到链接或激活输入按钮(光标或键盘) 原型让我在任何时候都无法准备好设备,但没有引发 JS 错误(IE 不喜欢 addEventListener 除外)

【讨论】:

【参考方案2】:

尝试这样做:

<script> 
function init() 
    document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() 
    navigator.splashscreen.hide();

</script>
<body onload="init()">

虽然您使用的是 jQuery,但您可能希望将其更改为:

$(document).ready(function() 
  document.addEventListener("deviceready", onDeviceReady, false);
);

【讨论】:

【参考方案3】:

首先添加闪屏插件如下:

$ phonegap plugin add org.apache.cordova.splashscreen

第二次构建项目,“splashscreen.js”将合并到“phonegap.js”中

$ phonegap local build

祝你好运

【讨论】:

是否回答了 OP 中提出的问题?

以上是关于加载phonegap网站后在android上隐藏启动画面的主要内容,如果未能解决你的问题,请参考以下文章

如何将android屏幕下方的虚拟按键隐藏掉

PHONEGAP ANDROID:仅在应用程序主屏幕 (SplashScreen) 上隐藏状态栏

phonegap 应用程序在 ios 上加载网站非常慢

在启动时加载外部链接的 Phonegap 应用程序 - Android

使用插件访问从 phonegap Cordova 中的外部 URL 加载 Webste

键盘使用 iFrame/object 和 JQTouch 隐藏 PhoneGap Build 3.1 中的 iOS 输入字段