美文网首页
H5与Android互调

H5与Android互调

作者: 风月寒 | 来源:发表于2017-10-25 19:47 被阅读0次

1. WebView加载页面

webview可以加载本地和网络页面,根据html的文件位置,有不同的写法.

mWebView.loadUrl("www.baidu.com");

mWebView.loadUrl("file:///android_res/test.html");

通常情况下,webview会重新设置webchromeclient,以便在本应用内实现页面跳转.

mWebView.setWebViewClient(new WebViewClient() {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

         mWebView.loadUrl(url);

          return true;

     }

});

另外,要实现本文的与h5交互必须允许使用js接口,在实际开发中,一般都要加上这一句.

WebSettings settings = mWebView.getSettings();

settings.setJavaScriptEnabled(true);

2. WebView调用js方法

调用js方法有两种情况: 如果调用js的无返回值方法, 可以直接使用load方法

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

如果要调用有返回值方法,需要调用evaluatjavascript方法

mWebView.evaluateJavascript("sum(1,2)", new ValueCallback() {

@Override

public void onReceiveValue(String value) {

              Toast.makeText(ViewPagerGalleryDemoActivity.this, "value = " + value,                Toast.LENGTH_SHORT).show();

        }

});

调用H5中带参数的方法*

当调用H5中带参数的方法时,势必要传入一个字符串,当传入固定字符串时,用单引号括起来即可;当传入变量名时,需要用到转义符。

mWebView.loadUrl("javascript:alertMessage('哈哈')");

*String  content="9880";*

mWebView.loadUrl(  "javascript:alertMessage(\" "    +content+    "\")"      );

3. js调用Android方法

需要在Android中定义javascriptinterface接口和声明

首先要添加一个类和方法,并且用javascriptinterface

public class TestJavaScriptInterface {

@JavascriptInterface

private String testJavaScriptInterface () {

return "hello javascript"

}

}

打开javascriptinterface给h5的开关

mWebView.addJavascriptInterface(new TestJavaScriptInterface(), "android");

js代码如下

function s(){

//调用Java的back()方法

var result =window.android.testJavaScriptInterface();

document.getElementById("p").innerHTML=result;

}

相关文章

网友评论

      本文标题:H5与Android互调

      本文链接:https://www.haomeiwen.com/subject/jzvkextx.html