简介

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 = "<html><body>You scored <b>192</b> points.</body></html>";
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"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<WebView
    android:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/webView"/>
</LinearLayout>

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";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);webView = (WebView)this.findViewById(R.id.webView);WebSettings settings = webView.getSettings();//设置Webview可以调用javascriptsettings.setJavaScriptEnabled(true);//设置webview可以调用地理位置信息settings.setGeolocationEnabled(true);//设置webview调用地理位置信息的缓存路径settings.setGeolocationDatabasePath(getFilesDir().getPath());//配置获取设备位置信息的权限webView.setWebChromeClient(new WebChromeClient() {@Overridepublic 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:

Android之WebView相关推荐

  1. android使用webview时按后退退出的问题

    使用webview打包图片站点http://www.gg4493.cn,代码都好了,具体如下 public class MainActivity extends ActionBarActivity { ...

  2. android使用webview上传文件,Android项目中如何在webview页面中上传文件

    Android项目中如何在webview页面中上传文件 发布时间:2020-11-26 15:56:27 来源:亿速云 阅读:68 作者:Leah 本篇文章为大家展示了Android项目中如何在web ...

  3. Android的WebView控件载入网页显示速度慢的究极解决方案

    Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] Android客户端中混搭HTML页面,会出现虽然H ...

  4. android webview 填充,从Android使用WebView自动填充表格

    我正在使用WebView尝试使用我发送的数据填充表单.从Android使用WebView自动填充表格 WebView webView; String url = "http://139.59 ...

  5. 解决vue在ios或android中用webview打开H5链接时#号后面的参数被忽略问题angular同样适用

    解决vue在ios或android中用webview打开H5链接时#号后面的参数被忽略问题angular同样适用 参考文章: (1)解决vue在ios或android中用webview打开H5链接时# ...

  6. webview gif android,使用WebView android读取Gif图像

    当你试图从资源目录加载gif时,它没有动画,你应该使用GifWebView. activity_main.xml中 android:layout_width="fill_parent&quo ...

  7. Android使用WebView加载网页

    在AndroidManifest.xml设置访问网络权限: <span style="font-size:24px;"><span style="fon ...

  8. Android空间WebView和ViedeoView的使用

    文章目录 WebView - 显示网页 1.添加WebView 布局 2.Activity 3.结果 ViedeoView - 显示视频 1.添加ViedeoView布局 2.创建一个放视频文件的目录 ...

  9. Android中WebView加载sdcard中的html时提示:ERR_FILE_NOT_FOUND和ERR_ACCESS_DENIED

    场景 Android中WebView加载sdcard中的html显示: Android中WebView加载sdcard中的html显示_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在实 ...

  10. Android中WebView加载sdcard中的html显示

    场景 Android中使用WebView加载本地html并支持运行JS代码和支持缩放: Android中使用WebView加载本地html并支持运行JS代码和支持缩放_BADAO_LIUMANG_QI ...

最新文章

  1. CISCO HSRP
  2. 2008 R2 AD通过组策略针对用户进行限制QQ等软件的运行
  3. 模仿SDWebImage实现异步加载图片
  4. java opengl书_GitHub - cy-cyx/OpenGlDome: OpenGl的使用练习(安卓 Java opengl3.0)
  5. pdo php分页6,php pdo自动分页类代码与例子
  6. C++继承中的构造与析构
  7. 如何制作印章_电子公章怎么制作
  8. idea自定义快捷鍵
  9. idea使用svn拉取项目代码_IntelliJ IDEA 14 拉取SVN maven 多模块项目 部署tomcat 详细图解!...
  10. 如何从使用环境上区别光纤收发器?
  11. 七、matplotlib的使用
  12. android studio 引入httpclient,HttpClient不会导入Android Studio
  13. request和response的中文乱码问题
  14. fastdfs搭建_记一次生产环境FastDFS文件系统安装部署过程
  15. linux下安装在线mysql,嵌入式 Linux下安装Mysql离线和在线安装
  16. Netscreen的岁月 from Sina
  17. OneApiConnect(一) Fins欧姆龙通讯协议实现源代码
  18. Linux中出现 xxx is not in the sudoers file.This incident will be reported.
  19. WebRTC视频码率控制(序言)
  20. 八数码 问题 BFS+Cantor

热门文章

  1. SpringBoot2整合Mybatis拦截器,拦截mapper接口的某个方法
  2. 记一次Kafka warning排查过程
  3. Vue表单数据修改与删除
  4. UE-摄像机视角的切换
  5. BIM家装族库丨艺术家具族
  6. PDF文档如何用关键字精确查找?
  7. 下载安装webpack
  8. 题目;我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推现在,给定两个整数n和m,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素
  9. gitlab漏洞导致服务器被植入挖矿程序
  10. php如何开启电脑前置摄像头像素多少,Surface Pro 4有摄像头吗?摄像头像素是多少?...