简介

WebView是Android中用于加载web页面的控件

优点

  • 可以直接内嵌到App中用于显示和渲染web页面
  • 可以直接用html文件(网络上或本地assets中)作布局

配置权限

android:name="android.permission.INTERNET"
如果需要定位功能,还需要配置下面两个权限
android:name="android.permission.ACCESS_FINE_LOCATION"
android:name="android.permission.ACCESS_COARSE_LOCATION"

两个实现方法

  • setWebClient:主要处理解析,渲染网页等浏览器做的事情
  • setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等
    WebViewClient就是帮助WebView处理各种通知、请求事件的。

加载网页字符串

使用loadData()加载一段HTML内容

mWebView = (WebView) findViewById(R.id.id_webView);String summary = "You scored 192 points.";mWebView.loadData(summary, "text/html", null);

如下图:


这里写图片描述

加载网络资源

使用loadUrl()加载网络url

String htmlurl = "http://baidu.com";mWebView.loadUrl(htmlurl);

加载时,会自动跳转到系统浏览器打开,如下图:


这里写图片描述

而我们使用WebView就是为了展示网页,还跳转个鸡毛啊,为了解决这个问题,就要使用WebViewClient这个Class

mWebView.setWebViewClient(new WebViewClient() {    public boolean shouldOverrideUrlLoading(WebView view, String url){         //  重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边        view.loadUrl(url);        return true;    }});

效果如下图:


这里写图片描述

实例

创建Android项目名曰:WebViewTest
添加一个Activity,MainActivity
xml文件如下

<?xml version="1.0" encoding="utf-8"?>

java代码如下:

package com.webviewurl.test;import java.util.List;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.webkit.GeolocationPermissions.Callback;import android.graphics.Bitmap; public class MainActivity extends Activity { private static final String TAG = "MainActivity";    private WebView webView;    private static final String htmlurl="http://baidu.com";    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        webView = (WebView)this.findViewById(R.id.webView);        WebSettings settings = webView.getSettings();        //设置Webview可以调用javascript        settings.setJavaScriptEnabled(true);        //设置webview可以调用地理位置信息        settings.setGeolocationEnabled(true);        //设置webview调用地理位置信息的缓存路径                settings.setGeolocationDatabasePath(getFilesDir().getPath());        //配置获取设备位置信息的权限        webView.setWebChromeClient(new WebChromeClient() {            @Override            public void onGeolocationPermissionsShowPrompt(String origin,Callback callback) {                callback.invoke(origin, true, false);                  super.onGeolocationPermissionsShowPrompt(origin, callback);            }        });        webView.setWebViewClient(new WebViewClient() {            public boolean shouldOverrideUrlLoading(WebView view, String url){                 //  重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边                view.loadUrl(url);                return true;            }        });                webView.addJavascriptInterface(new ContactPlugin(), "contact");        webView.loadUrl(htmlurl);    }}

加载本地资源

方法同上,只是架子啊方法不同
webView.loadUrl("file:///android_asset/test.html");

Demo地址
CSDN:http://download.csdn.net/detail/shiquanqq/9464237
Github:

更多相关文章

  1. Android(安卓)NDK:JNI开发之Java调用C、C++方法:Hello word
  2. android中ContactsContract获取联系人的方法
  3. Andriod-View绘制流程
  4. Android(安卓)log日志记录方法
  5. Android四种Activity的加载模式
  6. android:maxLines和android:ellipsize同时使用导致显示异常
  7. Android消息机制Message消息池
  8. Android(安卓)最近的一些新的功能
  9. 浅谈Android中的ClassLoader

随机推荐

  1. 什么是一个很好的JS库,可以调整大小?
  2. extjs4 desktop 实现仿win7效果的桌面窗
  3. 谷歌地图API V3的使用限制是每个网站访问
  4. 可编辑的jquery表格插件
  5. Js中获取超链接里面传递的参数值
  6. 如何在SOF上的新帖子中没有像“Grippie”
  7. 覆盖odoo 8中的JS函数
  8. 八款Js框架介绍及比较,Dojo 、Scriptacul
  9. javascripterror 为空或不是对象.
  10. 使用js更改抛出事件的输入值