5

我想为手机创建一个插件,它传递并返回 javascript 和 android 之间的值。

任何人都可以就如何做到这一点提出任何想法吗?

4

2 回答 2

14

实际上,这并不是很困难。在这里,我将向您展示如何从页面内的 javascript 调用本机代码,反之亦然:

从 web 视图中调用本机代码
创建 web 视图时添加 javascript 接口(基本上是 java 类,其方法将被公开以通过 web 视图中的 javascript 调用。

JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");

javascript接口类本身的定义(这是我从我的另一个答案中获取的示例类,并以本机意图打开视频)

public class JavaScriptInterface {
    private Activity activity;

    public JavaScriptInterface(Activity activiy) {
        this.activity = activiy;
    }

    public void startVideo(String videoAddress){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); // The Mime type can actually be determined from the file
        activity.startActivity(intent);
    }
}

现在,如果您想从页面的 HTML 中调用此代码,请提供以下方法:

<script>
    function playVideo(video){
        window.JSInterface.startVideo(video);
    }
</script>

容易不是吗?

从本机代码调用 javascript 代码
这也很简单,假设在 WebView 中加载的 HTML 代码中定义了 javascript 函数:

<script>
    function function(){
        //... do something
    }
</script>

然后您通过本机代码中的 WebView 调用此函数,如下所示:

webView.loadUrl("javascript:function()");
于 2012-01-24T11:55:50.487 回答
0

Here's a tutorial for creating a PhoneGap Plugin. Also the instructions for the ChildBrowser plugin are especially good.

于 2012-01-25T21:30:44.807 回答