webview 远程js调用本地java实现交互怎么做?

如题所述

可以,只要你是用webview打开的,那么不管事远程还是本地,都可以通过webview与app的本地java代码进行交互。没有任何区别。

1、webview必须设置支持Javascript

mWebview.getSettings().setJavaScriptEnabled(true);

2、加进一个回调的代理类JavaScriptInterface,并给它一个调用的名称:ncp

mWebView.addJavascriptInterface(new JavaScriptInterface(), "ncp");
final class JavaScriptInterface { 

       public int callOnJs() {
                        
          return 1000;
       }
 
       public void callOnJs2(String mode) {
         //TODO
       }
   
  }

3、JS页面

<script type="text/javascript">  
        window.onload = function(){  
                document.getElementById('btn_1').addEventListener('click', onBtnClick, false);  
                var _int_value = window.ncp.callOnJs();  
                alert("get int from java:" + _int_value );  
        }  
        function onBtnClick() {  
                window.ncp.callOnJs2("click");  
        }  
  </script>

接下来就可以调用js方法了,

1、Java调用js方法

mWebView.loadUrl("javascript:onSaveCallback()");

 2、JS访问java方法

window.ncp.callOnJs2("click");

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-11-27
你指的是Android里面吗:
WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

webView.addJavascriptInterface(new WebAppInterface(this), "Android");

//方法:
public class WebAppInterface
{
Context mContext;

/** Instantiate the interface and set the context */
WebAppInterface(Context c)
{
mContext = c;
}

/** Show a toast from the web page */
// 如果target 大于等于API 17,则需要加上如下注解
// @JavascriptInterface
public void showToast(String toast)
{
// Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
Toast.makeText(mContext, toast, Toast.LENGTH_LONG).show();
}
}

JS中:

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />

<script type="text/javascript">
function showAndroidToast(toast)
{
Android.showToast(toast);
}
</script>

参考资料:http://www.cnblogs.com/mengdd/archive/2013/03/02/2940185.html本回答被提问者和网友采纳
相似回答