[android] Java脚本到Java native Bindings&反之亦然

时间:2011-08-12 08:17:43

标签: javascript android

我正在开发Web应用程序,我们尝试使用Java脚本API访问手机中的Native功能。

Android Web视图支持Java脚本到Java(本机)绑定的“AddJavascript”接口,如下面的链接

http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,java.lang.String)

但是如果我需要将数据传回Java脚本,那么在Android中没有API或机制可以这样做。 请问有没有办法让我知道如果有出路,请使用JSON努力尝试如下我们无法使用JSON传递所有类型的值

HTML with JS

<script id="source" language="javascript" type="text/javascript">
    function OnClick(){    
    var nativeStr = window.native.getValue();
    window.native.callBack();
    }

function JScallback(data) {
}
</script>


WebView wv = (WebView) findViewById(R.id.MyWebView);

NativeClass myNative = new NativeClass (wv);

wv.getSettings().setJavaScriptEnabled(true);
wv.addJavascriptInterface(myNative, "native");
wv.loadUrl("file:///html/test.html");

public class NativeClass{

private WebView mWebView;

public NativeClass  (WebView appView) {
    this.mWebView = appView;
}

public String getValue() {
    return "Native Value";
}  


public void callBack() {
JSONArray arr = new JSONArray();

JSONObject result = new JSONObject();
try {
    result.put("Name", "Android Dev"); 
    arr.put(result);
} catch (Exception ex) {

}       

mWebView.loadUrl("javascript:JScallback(" + arr.toString() + ")");

}

提前致谢, Android Dev。

1 个答案:

答案 0 :(得分:0)

正如我cross-posted thisandroid-developers Google小组写的那样:

  

致电loadUrl("javascript:..."),其中...是您的JavaScript   源代码。该JavaScript源代码将在上下文中执行   任何目前加载的网页。这是同样的技术   “bookmarklets”使用。