原理:
通过android与js的交互:android端写入js,让js获取元素属性的值并传给android的方法。
三步走:
1、获取属性要在界面加载完毕之后才能去获取:
代码:
private WebViewClient webViewClient = new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
// 获取页面内容
view.loadUrl("javascript:function getSrc(){\n" +
" window.jsAndroid.getIframeSrc(document.getElementsByTagName(\"iframe\")[0].src)\n" +
" }");
view.loadUrl("javascript:getSrc()");
super.onPageFinished(view, url);
}
};
说明:
onPageFinished方法中写入js,根据自己的需求写,我这里主要是取第一个iframe标签的src值。
document.getElementsByTagName方法获取的是一个数组,因为一个html界面可能不止一个这个标签。
jsAndroid为自定义名称,后面会用到。
2、准备好一个给js调用的Android方法getIframeSrc():
代码:
public final class InJavaScriptLocalObj
{
@JavascriptInterface
public void getIframeSrc(String src) {
Intent intent = new Intent(MainActivity.this,WebVideoPlayer.class);
intent.putExtra("url",src);
startActivity(intent);
}
}
说明:
src就是js传过来的参数的值了。
3、使用:将他们设置给webView用:
代码:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new InJavaScriptLocalObj(), "jsAndroid");
mWebView.loadUrl(url);
mWebView.setWebViewClient(webViewClient);
mWebView.setWebChromeClient(new WebChromeClient());
说明:
addJavascriptInterface方法做接收js调用android方法的设置
在这之前要设置js可用:setJavaScriptEnabled(true)
拓展:
获取img属性的src同理,也可以给界面写入点击事件的js,然后点击哪张图片就传src给android,android再去加载显示出来。
获取其他属性值也同理。
完!
转载注明出处:https://blog.csdn.net/qq_35584878/article/details/91536328