Android webview加载iframe标签的HTML
来源:互联网 发布:思科路由器端口nat 编辑:程序博客网 时间:2024/05/16 14:44
我最近项目需求加入文档云 根据后台返回的数据直接返回iframe标签,但是Android这边想用webview加载,中间出现过各种问题还好最终解决了。所以就整理出一下的代码自己做个笔记同时也希望对您有帮助!
直接上关键性的代码:
这是接口返回的iframe标签 (这是一个动态的PPT的文本,后台可以简单的定一下样式) <iframe src='http://s2.sgld.org/op/embed.aspx?src=http://s1.sgld.org:9191/d6ada647-9ed4-4b5b-b632-e94aa03f5694.pptx' frameborder='0' width='100%px' height='100%px'></iframe>
public static WebView pptWeb(Context context,WebView webview,String iframe,final ProgressBar pb){
WebSettings webSettings = webview.getSettings();
// 设置WebView属性,能够执行Javascript脚本
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginState(PluginState.ON);// 可以使用插件
// 设置用户代理(请求头)使得web端正确判断
webview.getSettings().setUserAgentString(
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
+ "; dccPlan/1.5.8.30");
// "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
+ "; dccPlan/1.5.8.30"
//1.5.8.30 改成自己项目的版本号
webview.setBackgroundColor(0);//这点可以防止有白边
// 设置可以访问文件
webSettings.setAllowFileAccess(true);
// 设置支持缩放
webSettings.setBuiltInZoomControls(true);
webSettings.setUseWideViewPort(true);// 设置此属性,可任意比例缩放
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setUseWideViewPort(true);
webSettings.setDefaultTextEncodingName("utf-8");
webSettings.setLoadWithOverviewMode(true);
webSettings.setSupportZoom(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setAllowFileAccess(true);
webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
webSettings.setBlockNetworkImage(true);
webSettings.setSupportMultipleWindows(true);
webSettings.setDisplayZoomControls(false);
webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);//不加上,会显示白边
webview.setVerticalScrollBarEnabled(false);
webview.setHorizontalScrollBarEnabled(false);
//设置 缓存模式
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
// 开启 DOM storage API 功能
webSettings.setDomStorageEnabled(true);
// webview.setWebChromeClient(new WebChromeClient());
// 安卓5.0 WebView 使用WebRTC, 调用摄像头与麦克风时的许可
webview.setWebChromeClient(new WebChromeClient() {
// ---WebRTC:
@Override
public void onPermissionRequest(PermissionRequest request) {
request.grant(request.getResources());
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO 自动生成的方法存根
pb.setProgress(newProgress);// 设置进度值
}
});
// webSettings.getUserAgentString();
// 设置Web视图
webview.setWebViewClient(new webViewClient());
webSettings.setAppCacheEnabled(true);
// 考虑到网页的加载速度,我们可以调用setWebChromeClient()方法
// 滚动条在整个page里
webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
if (!TextUtils.isEmpty(iframe)) {
String url = "<html>"+iframe+"</html>";
webview.loadData(url, "text/html", "utf-8");
}
return webview;
}
public static class webViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;//返回false
}
@Override
public void onPageFinished(WebView view, String url) {
view.getSettings().setBlockNetworkImage(false);
super.onPageFinished(view, url);
}
public void onPageStarted(WebView view, String url) {
super.onPageStarted(view, url, null);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
// 不要使用super,否则有些手机访问不了,因为包含了一条 handler.cancel()
super.onReceivedSslError(view, handler, error);
// 接受所有网站的证书,忽略SSL错误,执行访问网页
handler.proceed();
}
}
- Android webview加载iframe标签的HTML
- webview正常加载iframe标签下的视频
- Android webview加载html片段,没有<html><head>标签
- Android WebView加载字符串类型的HTML
- android webview shouldOverrideUrlLoading html iframe内部链接
- webView加载url、html或者直接加载带有html标签的文本内容
- webView加载html动态创建标签
- Android WebView 加载HTML代码
- webview中的img标签加载Android本地的图片
- Android WebView如何加载assets下的html文件
- Android WebView加载Html右边空白问题的解决方案
- Android WebView无法加载本地html文件的解决方法
- Android webview 加载html 页面缩放的问题
- Android WebView 加载本地SD卡的html
- android 使用WebView获得加载网页的html代码
- Android在webview下加载本地html的方式
- android WebView加载不出Html的问题
- android使用WebView加载html input标签调用手机相机相册 后添加扫码功能
- fastText、TextCNN、TextRNN……这里有一套NLP文本分类深度学习方法库供你选择 作者:机器人圈 / 微信号:ROBO_AI发表时间 :2017-07-28 图:pixabay
- [问题解决]unhandled exception——VC6.0
- Android.mk 文件语法详解
- SpringMVC学习笔记上
- 缓存一致性和跨服务器查询的数据异构解决方案canal
- Android webview加载iframe标签的HTML
- Working of __asm__ __volatile__ (“” : : : “memory”)
- 自己总结的有关表单的一些基础知识....表单的类型和属性......
- 设置Github,使用https:// 来替换 git://
- Appium入门实例(Java)
- Kettle 中常用 控件一览
- 安装AX2012R3流程
- String、StringBuffer和StringBuilder的区别
- Oracle 12c数据库优化器统计信息收集的最佳实践(二)