<WebView
android:id="@+id/webview"
android:background="@color/white"
android:layout_width="fill_parent"
android:layout_height="180dp"
android:layout_margin="5dp" />
// 访问网络权限
<uses-permission android:name="android.permission.INTERNET" />
  webview.getSettings().setJavaScriptEnabled(true);

  //自适应屏幕
webview.getSettings().setUseWideViewPort(true);
webview.getSettings().setLoadWithOverviewMode(true);
//支持缩放
webview.getSettings().setSupportZoom(true);
webview.getSettings().setBuiltInZoomControls(true); webview.loadUrl(“”); // 加载网页
webview.setWebViewClient(new MyWebViewClient()); // 不写这个,有可能部分网页加载不出来 class MyWebViewClient extends WebViewClient {
@Override
// 在WebView中而不是默认浏览器中显示页面
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}

WebView可直接指定URL显示网页:webView.loadUrl("http://www.baidu.com"); 

WebView可直接装载HTML代码 :  

webView.loadDataWithBaseURL(baseUrl, html, "text/html", "utf-8", historyUrl); 

JavaScript可以调用Java方法,互相传递数据 

webView.addJavascriptInterface(new Object()  {

     public void move(int x, int y)  {

          ... ...

     }

}, "demo"); 


点击页面按钮得到的Url连接地址。
 class MyWebViewClient extends WebViewClient {
@Override // 点击页面按钮得到的Url连接地址。
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals(WebUrl.ExitLogin)) { // 如果定义的地址和得到的地址相同
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle(getResources().getText(R.string.main_title));
dialog.setMessage(getResources().getText(R.string.main_message));
dialog.setNegativeButton(getResources().getText(R.string.main_cancel),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialog.setPositiveButton(getResources().getText(R.string.main_ok),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
............. }
}); dialog.show();
} else {
view.loadUrl(url);
}
return true;
}
webview.setWebViewClient(new MyWebViewClient());

获取页面弹出的对话框,可以获取对话框的内容 message。

webview.setWebChromeClient(new WebChromeClient() {
@Override // 获取页面弹出的对话框,可以获取对话框的内容 message。
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
if (!TextUtils.isEmpty(message)) {
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle(getResources().getText(R.string.main_title));
dialog.setMessage(getResources().getText(R.string.main_message));
dialog.setNegativeButton(getResources().getText(R.string.main_cancel),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialog.setPositiveButton(getResources().getText(R.string.main_ok),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
..........
}
});
dialog.show();
}
return true;
}
@Override
public boolean onJsConfirm(WebView view, String url, String message,
JsResult result) {
return true;
}
});

获取(网)页面弹出的对话框。

webview.setWebChromeClient(new WebChromeClient() {
@Override // 获取页面弹出的对话框,可以获取对话框的内容 message。
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
if (!TextUtils.isEmpty(message)) {
Log.i("tag", "onJsAlert..." + message);
return false;
}
return true;
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
return true;
}
});

WebView加载网页开始 ------- 网页加载完成,现在进度条。

 class MyWebViewClient extends WebViewClient {

         @Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon); progress.setVisibility(View.VISIBLE);
textview.setVisibility(View.VISIBLE);
} @Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url); progress.setVisibility(View.GONE);
textview.setVisibility(View.GONE);
}

@Override // 点击页面按钮得到的Url连接地址。
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i("tag", "MyWebViewClient..." + url); if (url.equals(WebUrl.ExitLogin)) {
...........
} else {
view.loadUrl(url);
}
return true;
}
}

WebView缓存清除

webview.clearCache(true);
webview.clearHistory();
webview.clearFormData();
webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

http://www.eoeandroid.com/thread-66479-1-1.html

Android安全开发之WebView中的地雷

http://www.devdiv.com/Android-android_webview_-thread-218274-1-1.html

WebView基本使用  http://www.cnblogs.com/mengdd/archive/2013/03/01/2938295.html

Android WebView常见问题及解决方案汇总   http://www.cnblogs.com/lee0oo0/p/4026774.html

Android WebView使用总结  http://blog.csdn.net/hknock/article/details/8560490

网页启动Activity,网页传值Activity  http://www.cnblogs.com/androidsj/p/4527868.html

 开源浏览器:http://www.apkbus.com/android-44306-1-1.html

webkit for androidhttp://www.cnblogs.com/Caiqinghua/archive/2011/05/04/2036864.html

11、WebView 使用总结的更多相关文章

  1. 理解ios 11中webview的视口

    iOS 11在状态栏区域带来了一些新的,也许是不直观的行为,这对使用Apache Cordova或Ionic等工具的开发人员尤为重要.特别是,这种行为变化会影响任何基于Web的应用程序,这些应用程序在 ...

  2. webview自总结

    2,webview ---- 运行时不调用系统自带浏览器: 1,安卓webview post传值问题: 11,WebView基本功能(html5.文件下载和远程URL) 10,webview--网络超 ...

  3. android-webview开发中的各种使用方法(持续更,尽量全)

    最新坑A:(没看过的可以从下面开始处看起): 测试部门测出来一个坑,当多次点击退出后,会出现app崩溃现象,报如下错误: java.lang.IllegalArgumentException: Rec ...

  4. Goals100

    Start:2016.4.10 100天目标:jy_ai学习.swift.设计模式        以10天为周期,开始周会,执行内容:自我检讨本周期,并展望下一个周期:目标一:寻找高效方法.1.思考, ...

  5. APP安全测评checklist

    leader不要打我啊,我要借用一下我组app的安全测评检查方案,这些最基本的安全防范措施应该是每个app都要注意的吧: 对了,首先,你的app得先混淆啊~:AndroidStudio 混淆打包 先来 ...

  6. Scala 快速入门

     Scalable 编程语言 纯正的的面向对象语言 函数式编程语言 无缝的java互操作 scala之父 Martin Odersky 1. 函数式编程 函数式编程(functional progr ...

  7. APP安全测评checklist---Android

    首先,你的app得先混淆:AndroidStudio 混淆打包 先来个checklist: 编号 检查项目 测评结果 1 明文传输用户名.密码和验证码等敏感信息. 2 不安全的本地存储. 3 泄漏后台 ...

  8. ios的一些经验记录2

    1.UITextField 的事件用 valuechanged outlet连接 2.swift 中 struct 和class的self 3.Int 和UInt 4.Gesture 的target ...

  9. Android UI一些技巧

    (1)去掉EditText的背景颜色  android:background="@null" (2)ListView 修改某行的值,因为一些功能逻辑,需要修改ListView某行的 ...

随机推荐

  1. 彷徨中的成长-记一个文科生的IT成长过程

    纠结了许久,要不要写这篇文章,然而最终还是写了.就权当总结与呻吟吧..当然,呻吟最开始还是发在自己的站点的,忍不住手贱,还是想发博客园. 1 剧透 人算不如天算:时隔多年,我竟然搞起了前端. 2 发端 ...

  2. Gulp实战和原理解析

    Gulp实战和原理解析(以weui作为项目实例)http://i5ting.github.io/stuq-gulp/

  3. lintcode 中等题:k Sum ii k数和 II

    题目: k数和 II 给定n个不同的正整数,整数k(1<= k <= n)以及一个目标数字. 在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案. 样例 ...

  4. Web 技术人员需知的Web 缓存知识

    最近的译文距今已有4年之久,原文有一定的更新.今天踩着前辈们的肩膀,再次把这篇文章翻译整理下.一来让自己对web缓存的理解更深刻些,二来让大家注意力稍稍转移下,不要整天HTML5, 面试题啊叨啊叨的~ ...

  5. Error building Player: Win32Exception: ApplicationName=‘xxxxxxxxxxxxxxxxxx//sdk\tools\zipalign.exe' , CommandLine='4 的解决办法

    更新了安卓SDK后,有时候Unity编译失失败,报错类似 Error building Player: Win32Exception: ApplicationName='D:/Program File ...

  6. JavaWeb项目开发案例精粹-第3章在线考试系统-004Service层

    1. package com.sanqing.service; import java.util.List; import com.sanqing.po.Student; public interfa ...

  7. Qt学习记录--Qt::CaseSensitive

    Qt::CaseSensitivity 为枚举类型, 可取值Qt::CaseSensitive 和 Qt::CaseInsensitive, 表示匹配的灵敏度. 比较字符串的时候 Qt::CaseSe ...

  8. Visual Studio Support (DDEX)

    原文 VS2012,VS2013,and VS2015Pro+NpgsqlDdexProvider+EFv6 how to(by @kenjiuno) Reference: #213 Overview ...

  9. 使用CXF暴露您的REST服务

    使用CXF暴露您的REST服务 REST应用服务器SpringBeanServlet  1.  前言 现在互联网Open API流行,将您的Web应用也可以开放Open API给其他第三方使用.达到一 ...

  10. Android 类似时间轴的实现

    想要实现图片中的的时间轴的效果,设定了三种颜色,但是出来的只有一个黑色,还不是设定好的,而且长度很长的话不能滚动,下面上代码: 布局文件: <LinearLayout xmlns:android ...