这些都是曾经收集到的一些关于Webview的知识,有些工作中用到了,有些暂时还没有用到,这次统一整理下,希望对自己,对大家有所帮助。另外,欢迎大家补充(当然,有错也要指正呀,不胜感激),如果可以的话,我会 更新到本帖中。

一.权限

二.创建Webview对象

WebView webview = new WebView(this);

三.加载网页的方式

loadData(String data, String mimeType, String encoding)

des:Load the given data into the WebView.

as:

String summary = "

You scored 192 points.";

webview.loadData(summary, "text/html", null);

loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)

des:Load the given data into the WebView, use the provided URL as the base URL for the content.

loadUrl(String url)

des:Load the given url.

as: webView.loadUrl("http://www.jianshu.com/"); //加载网络网页

webView.loadUrl("file:///android_asset/html/index.html"); //加载本地assert目录下网页

webView.loadUrl("content://com.Android.htmlfileprovider/sdcard/kris.html"); // 加载SD卡html

loadUrl(String url, Map extraHeaders)

Load the given url with the extra headers.

postUrl(String url, byte[] postData)

des: Loads the URL with postData using "POST" method into this WebView.

利用Intent调用系统浏览器

Uri uri = Uri.parse("http://www.jianshu.com/");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

startActivity(intent);

四.设置Webview

webView.clearHistory();

webView.clearCache(true);

webView.clearFormData();

webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);// 隐藏滚动条webView.requestFocus();

webView.requestFocusFromTouch();

五.Webview辅助类

1>WebSettings

设置WebView的一些属性、状态等,例如允许使用javascript,允许使用缓存,允许使用内置的缩放组件,设置支持IS等。

获取WebSettings对象:

WebSettings mWebSettings = webView.getSettings();

For Example

WebSettings mWebSettings = webView.getSettings();

mWebSettings.setJavaScriptEnabled(true);// 支持JS

mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);//支持通过js打开新的窗口

mWebSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);//提高渲染等级

mWebSettings.setBuiltInZoomControls(false);// 设置支持缩放

mWebSettings.setDomStorageEnabled(true);//使用localStorage则必须打开

mWebSettings.setBlockNetworkImage(true);// 首先阻塞图片,让图片不显示

mWebSettings.setBlockNetworkImage(false);// 页面加载好以后,在放开图片:

mWebSettings.setSupportMultipleWindows(false);// 设置同一个界面

mWebSettings.setBlockNetworkImage(false);

mWebSettings.setCacheMode(1);

mWebSettings.setNeedInitialFocus(false);// 禁止webview上面控件获取焦点(黄色边框)

2>WebViewClient

主要帮助WebView处理各种通知、请求事件(例如,点击链接时候如何显示界面,页面开始加载,加载完毕之后有何动作等)

webView.setWebViewClient(new WebViewClient() {

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

//页面开始加载时

super.onPageStarted(view, url, favicon);

}

@Override

public void onPageFinished(WebView view, String url) {

//页面加载结束时

super.onPageFinished(view, url);

}

@Override

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

super.onReceivedError(view, errorCode, description, failingUrl);

// 这里进行无网络或错误处理,具体可以根据errorCode的值进行判断,

}

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

/**

* 网页跳转:

* 1.在当前的webview跳转到新连接

* view.loadUrl(url);

* 2.调用系统浏览器跳转到新网页

* Intent i = new Intent(Intent.ACTION_VIEW);

* i.setData(Uri.parse(url));

* startActivity(i);

*/

return true;

}

});

3>WebChromeClient

辅助WebView处理Javascript的对话框、网站图标、网站Title、加载进度等

webView.setWebChromeClient(new WebChromeClient() {

@Override

public void onProgressChanged(WebView view, int newProgress) {

// 获得网页的加载进度 newProgress为当前加载百分比

super.onProgressChanged(view, newProgress);

}

@Override

public void onReceivedTitle(WebView view, String title) {

// 获取网页的title,客户端可以在这里动态修改页面的title

// 另外,当加载错误时title为“找不到该网页”

super.onReceivedTitle(view, title);

}

});

六.与JS交互addJavascriptInterface

前提

mWebView.getSettings().setJavaScriptEnabled(true);

使用

mWebView.addJavascriptInterface(new JSInterface(), "jsInterface");

JSInterface对象:

public class JSInterface {

@JavascriptInterface

public void methodA() { }

@JavascriptInterface

public void methodB(String webMessage) { }

}

注意:

1.JavascriptInterface是4.2版本google新增的一个注解,为了避免一个安全隐患,详细信息及4.2以下系统版本适配看这里:Android WebView的Js对象注入漏洞解决方案;另外,safe-java-js-webview-bridge这个开源项目完全用onJsPrompt() 替代了addJavaScriptInterface(),有兴趣的可以学习。

2.JS调用Java:

window.js_callback.viewPicOnJavascript($('article img').index(this));

3.客户端调用JS

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

七.键盘

webview是否可以返回到上一页面 webView.canGoBack()

webview返回到上一页面 webView.goBack();

webview是否可以前进 webView.canGoForward()

webview前进 webView.goForward();

public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {

mWebView.goBack();

return true;

}

return super.onKeyDown(keyCode, event);

}

八.其他

WebViewFragment

好吧,之前确实不知道有这么个东东,今天写这篇贴子的时候才发现的,看名字,应该是在Fragment里对Webview的封装,应该是个好东西。有兴趣的小伙伴们 点进来:WebViewFragment

WebView cookies清理

CookieSyncManager.createInstance(this);

CookieSyncManager.getInstance().startSync();

CookieManager.getInstance().removeSessionCookie();

屏蔽长按事件

webView.setOnLongClickListener(new View.OnLongClickListener() {

@Override

public boolean onLongClick(View v) {

return true;

}

});

Webiew保留缩放功能但是隐藏缩放控件(这是一招必杀技)

webView.getSettings().setSupportZoom(true);

webView.getSettings().setBuiltInZoomControls(true);

webView.getSettings().setDisplayZoomControls(false);

// setDisplayZoomControls是在Android 3.0中新增的API.,调用此方法前需要对系统版本进行判断

判断Webview是否滑动到顶部或底部

if (webView.getContentHeight() * webView.getScale() == (webView.getHeight() + webView.getScrollY())) {

// 处于底端

}

if(webView.getScrollY() == 0){

//处于顶部

}

des:

getScrollY() //方法返回的是当前可见区域的顶端距整个页面顶端的距离,也就是当前内容滚动的距离.

getHeight()或者getBottom() //方法都返回当前WebView这个容器的高度

getContentHeight()返回的是整个html的高度,但并不等同于当前整个页面的高度,因为WebView有缩放功能,所以当前整个页面的高度实际上应该是原始html的高度再乘上缩放比例

Thank you and have a nice weekend!

android创建webview,Android Webview总结相关推荐

  1. android 创建选项卡,Android用Fragment创建选项卡

    本文结合之前的动态创建fragment来进行一个实践,来实现用fragment创建一个选项卡 项目布局 xmlns:tools="http://schemas.android.com/too ...

  2. android 创建图片,[Android]创建图片

    Android开发中经常需要创建图片,而且从表现上来说,图片信息往往比文字信息更直观,更容易被人理解.所以创建图片的方法还是需要掌握的比较透彻,不应该像刚学Android开发一样--从别的地方复制过来 ...

  3. android创建layout,Android 创建不同的layout

    为了针对不同的屏幕去优化用户体验,我们需要为每一种将要支持的屏幕尺寸创建唯一的XML文件.每一种layout需要保存在相应的资源目录中,目录以-为后缀命名.例如,对大尺寸屏幕(large screen ...

  4. Android 创建,删除,检测桌面快捷方式

    2019独角兽企业重金招聘Python工程师标准>>> 参考 Android 创建快捷方式 Android 快捷方式动画 创建桌面快捷方式需权限 <uses-permissio ...

  5. Android:控件WebView显示网页

    WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要 ...

  6. php webview,Android:控件WebView显示网页 – tinyphp – 博客园

    WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要 ...

  7. WebView的使用之Android与JS通过WebView互调方法

    WebView的使用之Android与JS通过WebView互调方法 一.概述:  Android与JS通过WebView实现交互,实际上是: Android调用JS的代码: JS调用Android的 ...

  8. Android WebView(一) WebView详解

    WebView,在Android开发中,我们总是会遇到,它是Google封装的,使用WebKit渲染引擎加载显示网页.接下来,我们就详细看看WebView的介绍以及使用.如果你想了解WebView主要 ...

  9. WebView深究之Android是如何实现webview初始化的

    webview初始化 关注Android加载webview内核的过程.我们从WebView的init过程中切入. WebView的构造方法,最终都会调用 WebView(Context context ...

最新文章

  1. ADAS系统长篇综述(下)
  2. ISA SERVER日志存放SQL SERVER中
  3. win10 rabbitMQ的安装与测试
  4. aaaaaaaaaaa
  5. 利用yarn capacity scheduler在EMR集群上实现大集群的多租户的集群资源隔离和quota限制...
  6. kvmweb管理工具_KVM web管理工具——WebVirtMgr(一)
  7. Linux路由应用-使用策略路由实现访问控制
  8. 安装使用 superset
  9. MCU破解技术分析(一)
  10. Android API 中文 (53) —— BaseAdapter
  11. Excel按某一列排序
  12. presto cube等复杂聚合函数
  13. 【转】聚类——GMM
  14. (附源码)springboot教材订购系统的开发毕业设计081419
  15. 游戏中的镜头语言和应用
  16. 关于列columns的一些配置
  17. Android实现应用内多语言切换
  18. dz邮箱验证怎么设置_详细步骤!Discuz如何设置通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)实现论坛邮箱验证功能...
  19. Word制作三线表格并插入公式
  20. 学习笔记(01):【孙伟老师UID课堂】设计师也能会的-WEB前端入门基础HTML+CSS视频教程-09综合表单标签讲解-1...

热门文章

  1. 详解flex布局(flexbox)完整指南
  2. tomcat-安装版.exe 服务器的下载与安装
  3. 观澜放马埔旧村片区城市更新单元规划(草案)的公示
  4. java 开发双十一大屏幕_2019最赞的大屏可视化,一定是这款双十一的酷屏
  5. 2021冬-不靠谱的老板-使用 Siri 运行快捷指令
  6. 暨阳学院2022年绍兴市赛校内选拔赛(题解)
  7. centos备份远程mysql数据库,CentOS Linux自动备份MySQL数据库到远程FTP服务器并删除指定日期...
  8. 测试计算机办公软件应用,计算机应用和Office办公软件测试题
  9. mapReduce:网站日志分析项目案例:数据清洗
  10. 苹果手机如何进行语音转文字的操作?