android-WebView
使用WebView 加载页面
一、加载页面 使用loadUrl()
web资源:webView.loadUrl("http://www.baidu.com");
本地文件用:webView.loadUrl("file://android_asset/xx.html");
使页面获得焦点:webView.requestFocus();
二、 获取网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
三、 在WebView中使用Javascript
WebSettings 启用
WebView webView=(WebView)findViewById(R.id.webview);
getSettings() 获取WebSettings的值
WebSettings webSettings=webView.getSettings()
setJavaScriptEnabled() 启用
Javascript webSettings.setJavaScriptEnabled(true)
四、 处理页面导航
WebView通常默认浏览器打开并加载目标URL,然而你可以在WebView中覆盖这一行为,如此
链接就会在WebView中打开。
webView.setWebViewClient(new WebViewClient())
WebViewClient:帮助WebView去处理一些页面控制和请求通知
五、 后退与前进
当WebView覆盖URL加载,自动生成历史访问记录;可以通过goBack()或goForward()向后
向前访问已经访问过的站点
六、 判断页面加载过程
七、 WebView缓存的应用
八、缓存
优先使用缓存:
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
不适用缓存(默认):
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends Activity {
private String url="http://2014.qq.com/";
private WebView webView;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*Uri uri=Uri.parse(url);
Intent intent=new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);*/
init();
}
private void init() {
// TODO Auto-generated method stub
webView =(WebView) findViewById(R.id.webView);
webView.loadUrl(url);
//webView.loadUrl("file:///android_asset/test1.html");
//覆盖WebView通过第三方或者系统浏览器打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// true--在webView中打开 false---通过第三方或者系统浏览器打开
view.loadUrl(url);
return true;
}
});
//启用javascript
WebSettings webSettings=webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//优先使用缓存
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
//newProgress:1~100
if(newProgress==100){
//加载完毕,关闭ProgressDialog
closeDialog();
}else{
//正在加载,打开ProgressDialog
openDialog(newProgress);
}
}
private void openDialog(int newProgress) {
// TODO Auto-generated method stub
if(pd==null){
pd=new ProgressDialog(MainActivity.this);
pd.setTitle("正在加载");
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//横向进度条
pd.setProgress(newProgress);
pd.show();
}else{
pd.setProgress(newProgress);
}
}
private void closeDialog() {
// TODO Auto-generated method stub
if(pd!=null&&pd.isShowing()){
pd.dismiss();
}
}
});
}
//改写物理按键一键返回的逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_BACK){
Toast.makeText(this, webView.getUrl(),Toast.LENGTH_SHORT).show();
if(webView.canGoBack()){
webView.goBack();
return true;
}else{
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}
}
android-WebView的更多相关文章
- Android WebView 302斗争之旅
一.背景 越来越多的业务接入,项目内多多少少会出现几个H5页面,只是单纯的提供WebView容器接入H5页面根本满足不了需求,他们需要登录态,需要制定协议控制Native的导航栏,或者需要JsBrid ...
- Android WebView useragent
今天介绍一下Android WebView UserAgent, User-Agent(简称UA)是HTTP请求头部用来标识客户端信息的字符串, 包括操作系统, 浏览器等信息.为了建立手机客户端的信息 ...
- android webview开发问题及优化汇总
我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题.就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来.有些是老生常谈,有些则是个人摸索得出解决方 ...
- Android WebView 开发教程
声明在先:必须在AndroidMainfest.xml 里面声明权限,否则在Java里面编写的所有WebView浏览网页的代码都无法正常使用 <uses-permission android:n ...
- [Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案
[Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案 问题情景 在Android里,可以使用WebView来呈现本地或是远程的网页内容.但是在显示本地网页时,如 ...
- Android webview通过http get下载文件下载两次的问题及解决方法
一.现象 一般通过Android webview进行下载文件的方法是 1.重写DownloadListener的onDownloadStart方法,在onDownloadStart方法中弹出对话框提示 ...
- Android WebView常见问题及解决方案汇总
Android WebView常见问题解决方案汇总: 就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了web app与native app之间孰优孰劣的争论. 于是 ...
- android webview 底层实现的逻辑
其实在不同版本上,webview底层是有所不同的. 先提供个地址给大家查:http://grepcode.com/file/repository.grepcode.com/java/ext/com.g ...
- Android WebView访问SSL证书网页(onReceivedSslError)
Android WebView访问https SSL证书网页,如淘宝,需要在onReceivedSslError添加SSL支持 webview.setWebViewClient(new WebView ...
- Android WebView常见问题解决方案汇总
问题目录: 1.为WebView自定义错误显示界面: 2.WebView cookies清理 3.清理cache 和历史记录 4.判断WebView是否已经滚动到页面底端 5.URL拦截 6.处理We ...
随机推荐
- 用户层获取TEB PEB结构地址 遍历进程模块.doc
1.fs寄存器指向TEB结构 2.在TEB+0x30地方指向PEB结构 3.在PEB+0x0C地方指向PEB_LDR_DATA结构 4.在PEB_LDR_DATA+0x1C地方就是一些动态连接库地址了 ...
- 使用postMesssage()实现跨域iframe页面间的信息传递----转载
由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现: 1. 子页面url传参 ...
- 【JSON 注解】JSON循环引用2----JSON注解@JsonIgnoreProperties+JAVA关键字transient+后台对象与JSON数据的格式互相转化
接着来说这个JSON循环引用的问题: 关于JSON格式的转化,其实关键就是这几个依赖: <!-- json --> <!-- 1号 --> <dependency> ...
- MIT 6.828 JOS学习笔记0. 写在前面的话
0. 简介 操作系统是计算机科学中十分重要的一门基础学科,是一名计算机专业毕业生必须要具备的基础知识.但是在学习这门课时,如果仅仅把目光停留在课本上一些关于操作系统概念上的叙述,并不能对操作系统有着深 ...
- ASP.Net MVC开发基础学习笔记(1):走向MVC模式
一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...
- JSON.parse()和JSON.stringify()使用
JSON.parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age&qu ...
- light oj 1422 Halloween Costumes (区间dp)
题目链接:http://vjudge.net/contest/141291#problem/D 题意:有n个地方,每个地方要穿一种衣服,衣服可以嵌套穿,一旦脱下的衣服不能再穿,除非穿同样的一件新的,问 ...
- hdu3033 背包变形
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3033 大意:每类物品中至少买一件,比较简单 AC代码: #include<iostr ...
- cf 710E dp
题目链接: http://codeforces.com/problemset/problem/710/E 题意:要输入n个字符'a',有两种操作,一种是输入或删除一个'a',耗时x:另一种是把当前的整 ...
- AngularJS学习之SQL
1.使用PHP从MySQL中读取数据: <div ng-app="myApp" ng-controller="customersCtrl" > &l ...