您的位置:首页 > 移动开发

Android WebView使用总结

2017-10-31 23:36 323 查看

Android WebView使用总结

1.shouldOverrideUrlLoading

Android系统在API21(也就是Android5.0)时更新了shouldOverrideUrlLoading方法,原

public boolean shouldOverrideUrlLoading(WebView view, String url)被标记为过时,google新增了

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)方法来代替。

从源码来看,

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return shouldOverrideUrlLoading(view, request.getUrl().toString());
}


新方法内部仍然调用了原旧方法,不过比之前的方法更为强大。当我们更新targetSdkVersion以适配新系统特性时,为保证兼容性,在设置

setWebViewClient建议两个方法均调用,可如下进行:

webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//代码逻辑
return true;
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
//代码逻辑
}
return true;
}
});


2.加载本地资源

try {
StringBuilder content = new StringBuilder();
InputStream stream = this.getAssets().open("demo.html");
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String line;
while((line = reader.readLine()) != null)
{
content.append(line);
content.append('\n');
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
String html = content.toString();
webView.loadDataWithBaseURL("file:///android_asset/",html,"text/html","utf-8",null);


3.支持JS

webView.getSettings().setJavaScriptEnabled(true);//支持JS
webView.addJavascriptInterface(jsObject,"jsObjectName");//添加JS接口


4.加载播放H5本地视频

自动播放

webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
webView.loadUrl("javascript:(function() { var videos = document.getElementsByTagName('video'); for(var i=0;i<videos.length;i++){videos[i].play();}})()");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息