什么是PhoneGap使用所有HTML CSS和JavaScript的东西?

时间:2013-07-04 17:35:53

标签: jquery-mobile cordova

作为示例,我构建了一个HTML5 CSS3和JS应用程序。如果我想在Android手机上运行它,我必须将所有这些东西放在资产www文件夹中,之后我必须将cordova.jar导入到lib并进行这些更改

public class Test  extends DroidGap {

 @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");
    }

但会发生什么。这个应用程序在哪里运行? 什么是phonegap呢? 请帮忙!

1 个答案:

答案 0 :(得分:3)

在运行时,PhoneGap通过在设备上实例化浏览器组件来工作。这是一个无铬浏览器,这意味着它没有地址栏或前进/后退按钮。最终开发人员的应用程序包含加载到浏览器组件中的HTML,JavaScript和CSS。 PhoneGap提供了一个JavaScript API,允许开发人员代码访问设备功能,当前默认浏览器中加载的网站无法访问这些功能。 PhoneGap使用的Web视图与本机操作系统使用的Web视图相同。在iOS上,这是Objective-C UIWebView类;在Android上,这是android.webkit.WebView。

想要显示Web组件,这一切都从Web视图开始!此webview应该能够加载HTML(本地或远程),并运行Javascript和CSS。所有主流智能手机都配备了XYZWebView,您唯一需要注意的是它们之间HTML / CSS支持的(减少)差距。

下一步是允许该webview中的Javascript代码调用您的本机代码,反之亦然。所有平台都可以做到这一点,但不幸的是,他们都采用了不同的方式。

Android - Java objects are marshalled into the webview, and native methods can be called directly.

iOS - Javascript needs to make a call to a URL with a custom scheme (think native://mycall), which is intercepted by the native code.

Windows 8 - The web view exposes a window.external.notify function that Javascript can call at will.

反向桥通常要容易得多:如果webview公开了一个全局javascript函数,本机代码可以简单地调用它来传递任何必需的参数。诀窍在于该调用是否同步,具体取决于平台。