Android webview使用,js交互
程序员文章站
2024-02-05 20:52:46
...
内容简单,Android和h5的交互就是两种,一种Android调用h5方法,一种h5调用Android方法。直接上代码看的更直观,内容不多,不常用到,做个记录
Android端代码:
一、webview控件的属性设置。其中addJavascriptInterface 方法中,第二个参数name,这个name需要和h5中的name对应。
// 启用javascript
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
// 加载html
webView.loadUrl("http://192.168.7.107:8848/video/html/diaoyong.html");
//name:android在网页里面可以用window.name.方法名调用java方法
webView.addJavascriptInterface(AdInfoActivity.this, "WebViewJavascriptBridge");
h5中的name,我以这个url为例在浏览器中看它的代码找到了是这个:WebViewJavascriptBridge
二、Android调用h5方法
用的是evaluateJavascript方法,其中JavaScript:obtain 里 obtain是与h5中提供被调用方法名一致。 str为我传给h5的内容,也可不传。
//Android调用js
public void obtain(String str){
webView.evaluateJavascript("javascript:obtain('" + str + "')", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
ToastUtil.getInstance()._short(AdInfoActivity.this,s);
}
});
}
三、h5调用Android方法
方法一定要加@JavascriptInterface,叫share是因为要和h5中的方法一致,参数string,为h5调用Android时传过来的内容。
方法内容在子线程中进行界面操作。
@JavascriptInterface
public void share(final String parameter) {
runOnUiThread(new Runnable() {
@Override
public void run() {
ToastUtil.getInstance()._short(AdInfoActivity.this,"点击分享");
}
});
}
完毕! h5交互平时用的不多,写下来以作记录。