使用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的更多相关文章

  1. Android WebView 302斗争之旅

    一.背景 越来越多的业务接入,项目内多多少少会出现几个H5页面,只是单纯的提供WebView容器接入H5页面根本满足不了需求,他们需要登录态,需要制定协议控制Native的导航栏,或者需要JsBrid ...

  2. Android WebView useragent

    今天介绍一下Android WebView UserAgent, User-Agent(简称UA)是HTTP请求头部用来标识客户端信息的字符串, 包括操作系统, 浏览器等信息.为了建立手机客户端的信息 ...

  3. android webview开发问题及优化汇总

    我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题.就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来.有些是老生常谈,有些则是个人摸索得出解决方 ...

  4. Android WebView 开发教程

    声明在先:必须在AndroidMainfest.xml 里面声明权限,否则在Java里面编写的所有WebView浏览网页的代码都无法正常使用 <uses-permission android:n ...

  5. [Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案

    [Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案 问题情景 在Android里,可以使用WebView来呈现本地或是远程的网页内容.但是在显示本地网页时,如 ...

  6. Android webview通过http get下载文件下载两次的问题及解决方法

    一.现象 一般通过Android webview进行下载文件的方法是 1.重写DownloadListener的onDownloadStart方法,在onDownloadStart方法中弹出对话框提示 ...

  7. Android WebView常见问题及解决方案汇总

    Android WebView常见问题解决方案汇总: 就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了web app与native app之间孰优孰劣的争论. 于是 ...

  8. android webview 底层实现的逻辑

    其实在不同版本上,webview底层是有所不同的. 先提供个地址给大家查:http://grepcode.com/file/repository.grepcode.com/java/ext/com.g ...

  9. Android WebView访问SSL证书网页(onReceivedSslError)

    Android WebView访问https SSL证书网页,如淘宝,需要在onReceivedSslError添加SSL支持 webview.setWebViewClient(new WebView ...

  10. Android WebView常见问题解决方案汇总

    问题目录: 1.为WebView自定义错误显示界面: 2.WebView cookies清理 3.清理cache 和历史记录 4.判断WebView是否已经滚动到页面底端 5.URL拦截 6.处理We ...

随机推荐

  1. MapReduce中的分区方法Partitioner

    在进行MapReduce计算时,有时候需要把最终的输出数据分到不同的文件中,比如按照省份划分的话,需要把同一省份的数据放到一个文件中:按照性别划分的话,需要把同一性别的数据放到一个文件中.我们知道最终 ...

  2. HDU 4821 String (HASH)

    题意:给你一串字符串s,再给你两个数字m l,问你s中可以分出多少个长度为m*l的子串,并且子串分成m个长度为l的串每个都不完全相同 首先使用BKDRHash方法把每个长度为l的子串预处理成一个数字, ...

  3. HTML5 重要标签及其属性学习

    1.google字体:<link href="https://fonts.googleapis.com/css?family=Lobster" rel="style ...

  4. Zepto tap 穿透bug

    当两个层重叠在一起时,使用Zepto的tap事件时,点击上面的一层时会触发下面一层的事件,特别是底层如果是input框时,必“穿透”,“google”说原因是“tap事件实际上是在冒泡到body上时才 ...

  5. Codeforces 335C Sorting Railway Cars

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  6. PHP、Java输出json格式数据

      PHP 输出json. $result = mysql_query($sql); //查询结果 $users=array(); $i=0; while($row=mysql_fetch_array ...

  7. Visual Studio: 暂时?绕过 fatal error C1083: Cannot open precompiled header file

    可以使用右键点击项目工程中的该cpp文件,选择setting,在c/c++栏,选择PreCompiled headers,然后设置第一选项,选择不使用预编译头.

  8. soapui中文操作手册(六)----创建REST Testing

    首先,通过选择文件菜单中的“新建REST项目”选项创建从文件菜单中一个新的REST项目: 指定服务端点场下谷歌地图API网址: http://maps.googleapis.com/maps/api/ ...

  9. ASP.NET Global.asax详解

    最近在研究bbsmax的代码,但是一直不知道入口在哪里,然后就对各个文件分析了,然后终于在对global.asax文件查看的时候看到Application_BeginRequest才明白入口,所以现在 ...

  10. unity gizmo绘制圆形帮助调试

    using UnityEngine; using System.Collections; using System; public class LearnGrazio : MonoBehaviour ...