【发布时间】:2012-02-17 10:45:15
【问题描述】:
我想为手机创建一个插件,它可以在 javascript 和 android 之间传递并返回值。
任何人都可以就如何做到这一点提出任何想法吗?
【问题讨论】:
标签: javascript android parameter-passing phonegap-plugins
我想为手机创建一个插件,它可以在 javascript 和 android 之间传递并返回值。
任何人都可以就如何做到这一点提出任何想法吗?
【问题讨论】:
标签: javascript android parameter-passing phonegap-plugins
其实,这并不难。在这里,我将向您展示如何在页面内从 javascript 调用本机代码,反之亦然:
在网络视图中调用本机代码:
创建 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()");
【讨论】:
这是用于创建 PhoneGap 插件的tutorial。 ChildBrowser 插件的instructions 也特别好。
【讨论】: