WebView的使用

news/2024/9/23 4:21:21/

一、WebView简介

    在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView的组件;WebView(网络视图)能加载显示网页;

二、WebView的使用

    WebView简单使用的步骤如下:

   (1)、在布局文件中声明WebView

       (2)、在Activity中实例化WebView

       (3)、需要在AndroidManifest.xml文件中添加网络权限:

        <uses-permission android:name="android.permission.INTERNET"/>

       (4)、调用WebView的loadUrl( )方法,设置WevView要显示的网页

       (5)、为了让WebView能够响应超链接功能,需要通过setWebViewClient( )设置WevViewClient

        (6)、如果想要知道网页加载进度等信息,需要通过setWebChromeClient()设置

WebChromeClient;

       

    WebView主要属性设置如下:

//设置滚动条样式

webview.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);

webview.setHorizontalScrollBarEnabled(false);

//加载网络页面

webview.loadUrl(url);

//加载本地html

webView.loadUrl("file:///android_asset/demo.html");

//加载html源码

webView.loadDataWithBaseURL("","html源码","text/html","utf-8","");

WebView网页现实的相关设置要通过

WebSettings设置,如下:

WebSettings settings = webview.getSettings();

//支持JavaScript

settings.setJavaScriptEnabled(true);

//支持网页缩放

settings.setSupportZoom(true);

settings

.setBuiltInZoomControls(true);

//设置网页缓存

settings.setAppCacheEnabled(true);// 开启缓存

ettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);// 缓存优先模式

settings.setAppCacheMaxSize(8 * 1024 * 1024);// 设置最大缓存为8M

//支持多窗口

settings.setSupportMultipleWindows(true);

重写WevViewClient:

public class MyWebViewClient extends WebViewClient{

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return false;

}

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

}

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

}

}

重写

WebChromeClient

WebChromeClient mChromeClient = new WebChromeClient() {

@Override

public void onProgressChanged(WebView view, int newProgress) {

super.onProgressChanged(view, newProgress);

}

/**

* 支持alert效果

*/

@Override

public boolean onJsAlert(WebView view, String url, String message, f inal JsResult result) {

//此处可以弹出dialog

return true;

}

/**

* 处理Js的Confirm

*/

public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {

//此处可以弹出警告弹框

return true;

}

};

三、重写返回键实现点击返回键回退网页

//覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {

webView.goBack(); //goBack()表示返回WebView的上一页面

return true;

}

return false;

}

四、 WebView和JaveScript交互:

webView.addJavascriptInterface(new JsToJava(), "stub");//js调用Android

//调用JS方法,并传递参数

webView.loadUrl("javascript:invokedByJava('哈哈')");

private class JsToJava {

@JavascriptInterface

public void jsMethod(final String paramFromJS) {

webView.post(new Runnable() {

@Override

public void run() {

Toast.makeText(MainActivity.this,paramFromJS,Toast.LENGTH_SHORT).show();

}

});

}

}

html代码:

<html>

<head>

<title>JS交互</title>

<meta http-equiv="content-type" content="text/html; charset=utf-8"/>

<script type="text/javascript">

function invokedByJava(param) {

document.getElementById("content").innerHTML = "Java has invoked JS function and returnd the data:"+param;

}

</script>

</head>

<body>

<p id="content"></p>

<p>

<input type="button" value="调用Java方法" οnclick="window.stub.jsMethod('来至JS的参数');" />

<input type="button" value="调用alert" οnclick="alert('hello')" />

</p>

</body>

</html>


http://www.ppmy.cn/news/657596.html

相关文章

Android WebView 录音

权限列表 <uses-permission android:name"android.permission.INTERNET" /><uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE&…

SpringCloudAlibaba实战入门之RocketMQ消息发送(六)

本篇文章是承接上一篇文章《SpringCloudAlibaba实战入门之RocketMQ下载配置和启动(五)》,如果没有看过上一篇文章并按照指导配置和启动Rocket MQ的网友,请先阅读该篇文章以后再阅读本篇 一、创建spring-cloud-rocketmq项目 1、复制之前的项目模块新建一个项目模块,修改新…

Chrome远程调试webview

Chrome远程调试webview 前提&#xff1a;电脑需要具备科学上网的条件&#xff08;主要是可以访问谷歌服务器&#xff09;。 使用 Chrome 开发者工具在您的原生 Android 应用中调试 WebView。 在 Android 4.4 (KitKat) 或更高版本中&#xff0c;使用 DevTools 可以在原生 Andro…

对uniapp中的webview的理解

今天花了将近一天的时间去研究了一下uniapp中的webview组件的应用。说起webview&#xff0c;想必大家都不会陌生&#xff0c;开发小程序的朋友或多少都会用上。记忆之中&#xff0c;当时开发小程序的时候只是做了一个跳转&#xff0c;然后展示&#xff0c;并没有其他的。现在&a…

android webview权限申请_android WebView全面总结

WebView是安卓中用来显示html文本内容的的控件,对html5也有很好的支持,ios的控件UIWebView差不多。网上对WebView的解释很多,但都是零星的介绍,导致到现在为止webview给我的印象都是,貌似很强大,其实很鸡肋,于是决定总结一下webview的开发经验。 使用WebView并不需要开通…

安卓WebView相关设置

Android WebView 的相关设置 settings相关设置 webView.settings.apply {//开启jsjavaScriptEnabled true//弹出框的设置//1.NARROW_COLUMNS&#xff1a;可能的话使所有列的宽度不超过屏幕宽度//2.NORMAL&#xff1a;正常显示不做任何渲染//3.SINGLE_COLUMN&#xff1a;把…

webview相关

在Android N及以下版本&#xff0c;webview默认跟browser端运行在同一个进程中&#xff0c;在Android O及以上版本&#xff0c;webview默认运行在单独进程&#xff0c;称为renderProcess&#xff0c;作为browser端所有webview的容器。 browser端代码分为两部分 android sdk部…

Android:最全面的 Webview 详解

前言 现在很多App里都内置了Web网页&#xff08;Hyprid App&#xff09;&#xff0c;比如说很多电商平台&#xff0c;淘宝、京东、聚划算等等&#xff0c;如下图 那么这种该如何实现呢&#xff1f;其实这是Android里一个叫WebView的组件实现的。今天我将全面介绍WebView的常用…