webview android%3e28,WebView的基本使用

本文详细介绍了Android中WebView的使用,包括WebChromeClient和WebSettings的常用方法,如处理js交互、网页加载进度和设置webview参数。此外,还展示了如何实现Java与js之间的交互,并强调了在4.2以下版本中使用addJavascriptInterface的安全问题。最后,提供了WebView基本使用示例和关键方法的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、一些常用的方法

1.WebChromeClient

WebChromeClient来处理js交互与互联网业内容,常用到的方法有

onJsAlert() 接收网页的alert事件

onJsPrompt() 接收网页的Prompt输入框事件

onJsConfirm() 接收网页的confirm确认事件

onProgressChanged() 页面加载百分比

onReceivedIcon() 接收网页的图标

onReceivedTitle() 接收网页的标题

2.WebSettings

webview的设置类,能够设置webview的各种详细参数

设置是否使用file协议访问网页,常用于访问assets与raw文件夹下面的网页

setAllowFileAccess(boolean allow)

设置是否使用webview自带的缩放功能

setBuiltInZoomControls(boolean enabled)

设置是够支持html5的数据库功能

setDatabaseEnabled(boolean flag)

setDomStorageEnabled(boolean flag);

设置页面的文字大小

setDefaultFontSize(int size)

设置是否执行页面的js方法

setJavaScriptEnabled(boolean flag)

设置返回键的处理,是否使用缓存加载页面

LOAD_DEFAULT(先从cache加载,没有再去网络加载), LOAD_CACHE_ELSE_NETWORK(先从cache加载,没有再去网络加载) LOAD_NO_CACHE(不使用cache)

LOAD_CACHE_ONLY(只使用cache)

setCacheMode()

3.WebView

android提供的控件,能够加载网页和html数据。

增加一个对象使webview能够让java代码与js交互

addJavascriptInterface(Object object, String name)

加载一个网页,能够是网络的网页,也能加载本地的网页,本地的网页使用(file:///assets/)来 加载。也可以调用一个javaScrpit方法

loadUrl(String url)

加载一段html代码

loadData(String data, String mimeType, String encoding)

loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)

刷新当前页面

reload()

获取当前页面的标题

getTitle()

判断webview是否能够回到上一步

canGoBack()

goBack()

二、Webview的基本使用

由于布局比较简单,这里就不在给出,布局中只有一个VebView控件

public class WebViewActivity extends Activity {

WebView webView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_web_view);

webView = (WebView)findViewById(R.id.webwiew);

//启用javaScript

webView.getSettings().setJavaScriptEnabled(true);

//全屏显示

webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);

webView.getSettings().setUseWideViewPort(true);

webView.getSettings().setLoadWithOverviewMode(true);

webView.loadUrl("这里是所要加载的网页的url");

//处理url重定向不要抛到系统浏览器

webView.setWebViewClient(new WebViewClient(){

@Override

public boolean shouldOverrideUrlLoading(WebView view,String url){

view.loadUrl(url);

return true;

}

});

}

@Override

public void onBackPressed(){

//如果webwiew能够回退到上一个页面

if (webView.canGoBack()){

webView.goBack();

}

super.onBackPressed();

}

}

复制代码

三、Android中Java与js之间的交互

首先在Activity中写一个方法(我这里是javaShow()方法)。方法体上面必须帖@JavascriptInterface标签

通过调用addJavascriptInterface(Object object, String name)增加一个Java对象使webview能够让java代码与js交互,object是传给js的Java对象,name是给该对象起的名字。

js通过window.对象名.方法名()(我这里对象名为demo,java的方法名为javaShow,所以就可通过window.demo调用到javaShow()方法)就可以调用到java中的方法

public class WebViewActivity extends Activity {

WebView mWebView;

//html的内容

String body;

@Override

@JavascriptInterface

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_web_view);

mWebView = (WebView) findViewById(R.id.webview);

mWebView.getSettings().setJavaScriptEnabled(true);

//这里js通过window.demo.javaShow()就可以调用到java中的javaShow()方法

body = "

" + html代码(由于篇幅问题这里用html代码几个文字来代替一些html内容) + "";

mWebView.addJavascriptInterface(this,"demo");

mWebView.loadDataWithBaseURL(null, body, "text/html", "utf-8", null);

}

@JavascriptInterface

public void javaShow(){

Intent intent = new Intent();

intent.setClass(this,DetailImageActivity.class);

intent.putExtra("image",images);

startActivity(intent);

}

}

复制代码

四、使用WebView需要注意的问题

在android 4.2版本以下的手机有一个问题就是,webview会被JavaScript注入,造成手机出现信息安全的问题,比如下载病毒,发送短信等等。问题就出在addJavascriptInterface方法。JavaScript通过调用这个接口可以直接操作本地的JAVA接口。

google在4.2的版本上面解决了这个问题,解决的方法是在被js调用的方法上面加上一个声明, @JavascriptInterface ,但是4.2版本以下的手机就没有提出官方的解决方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值