11、WebView 使用总结
<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 使用总结的更多相关文章
- 理解ios 11中webview的视口
iOS 11在状态栏区域带来了一些新的,也许是不直观的行为,这对使用Apache Cordova或Ionic等工具的开发人员尤为重要.特别是,这种行为变化会影响任何基于Web的应用程序,这些应用程序在 ...
- webview自总结
2,webview ---- 运行时不调用系统自带浏览器: 1,安卓webview post传值问题: 11,WebView基本功能(html5.文件下载和远程URL) 10,webview--网络超 ...
- android-webview开发中的各种使用方法(持续更,尽量全)
最新坑A:(没看过的可以从下面开始处看起): 测试部门测出来一个坑,当多次点击退出后,会出现app崩溃现象,报如下错误: java.lang.IllegalArgumentException: Rec ...
- Goals100
Start:2016.4.10 100天目标:jy_ai学习.swift.设计模式 以10天为周期,开始周会,执行内容:自我检讨本周期,并展望下一个周期:目标一:寻找高效方法.1.思考, ...
- APP安全测评checklist
leader不要打我啊,我要借用一下我组app的安全测评检查方案,这些最基本的安全防范措施应该是每个app都要注意的吧: 对了,首先,你的app得先混淆啊~:AndroidStudio 混淆打包 先来 ...
- Scala 快速入门
 Scalable 编程语言 纯正的的面向对象语言 函数式编程语言 无缝的java互操作 scala之父 Martin Odersky 1. 函数式编程 函数式编程(functional progr ...
- APP安全测评checklist---Android
首先,你的app得先混淆:AndroidStudio 混淆打包 先来个checklist: 编号 检查项目 测评结果 1 明文传输用户名.密码和验证码等敏感信息. 2 不安全的本地存储. 3 泄漏后台 ...
- ios的一些经验记录2
1.UITextField 的事件用 valuechanged outlet连接 2.swift 中 struct 和class的self 3.Int 和UInt 4.Gesture 的target ...
- Android UI一些技巧
(1)去掉EditText的背景颜色 android:background="@null" (2)ListView 修改某行的值,因为一些功能逻辑,需要修改ListView某行的 ...
随机推荐
- 02 - Tomcat配置
Tomcat配置 本文内容 介绍 Windows UNIX daemon 1.介绍 首选看Tomcat目录下的RUNNING.TXT 2.Windows平台下 可以选择下载windows instal ...
- 220 DIV2 A. Inna and Pink Pony
Inna and Pink Pony 输入n,m,i,j,a,b 可以看成n行m列的矩阵,起点(i,j),每次移动(a,b),(-a,-b),(-a,b),(a,-b) 可移动到(1,m),(n,1) ...
- java split IP地址要用双斜杠
示例代码: public void test() { String address = "11.12.13.14:800"; System.out.println(address. ...
- Intellij 导入play framework 项目
新建一个项目 play new helloworld IshallbeThatIshallbe:~ iamthat$ mkdir temp IshallbeThatIshallbe:~ iamthat ...
- 被称为同步神器的 BTSync,你可以怎么用?
在这高速运作的信息化时代,使用云端来衔接工作和生活的点滴已是寻常事.可你是否曾扪心自问过:用各大云端备份自己的信息资料,真的安全放心吗? 毫不夸张的说,其实恶意代码和漏洞早已和你如影随形.你甚至都不用 ...
- iOS 深入理解RunLoop
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何利 ...
- linux 查看某一端口的占用情况
查看某一端口的占用情况: lsof -i:端口号,例如查看端口21是否被占用 lsof -i: 实例:查看端口是否被占用,如果被占用结束掉该端口 [root@localhost splunk]# ls ...
- 开源入侵检测系统OSSEC搭建之二:客户端安装
上一篇文章中已经将OSSEC服务端的安装以及客户端的Key导出操作做了解说,接下来在另一台虚拟机中安装客户端,与安装服务端类似同样需要安装ossec,步骤如下. 一.下载ossec-hids-2.8. ...
- 使用eclipse的快捷键自动生成的map或者reduce函数的参数中:“org.apache.hadoop.mapreduce.Reducer.Context context”
今天在测试mapreduce的程序时,就是简单的去重,对照课本上的程序和自己的程序,唯一不同的就是“org.apache.hadoop.mapreduce.Reducer.Context contex ...
- Google发布SSLv3漏洞简要分析报告
今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...