您的位置:首页 > 理论基础 > 计算机网络

WebView简易网页网络访问

2016-10-11 21:23 274 查看
示例代码块

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方法" onclick="window.stub.jsMethod('来至JS的参数');" /

>

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

</p>

</body>

</html>

一、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;

}

};

三、重写返回键实现点击返回键回退网页
注意在支持JavaScript的网页就不需要判定给予的地址和返回地址是否一样(url。equals(webview.geturl()))

//覆盖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();

}

});

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: