WebView是android.webkit包下的一个组件,能用来显示网页。
WebView默认是不带地址栏和加载进度条的,单单是一个显示页面内容的面板。
使用WebView非常简单,主要是通过load方法进行加载。
[使用WebView打开一个网页]
1.在布局xml文件中定义WebView组件
<
WebView
android:id
=
"@+id/webview"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
/>
2.在AndroidManifest.xml中添加网络访问权限
<
uses-permission
android:name
=
"android.permission.INTERNET"
/
>
3.通过load函数加载网页
mWebview
= (WebView)
this
.findViewById(R.id.
webview
);
// 简单地加载一个页面
// 加载assets目录下的页面(assets\index.html)
mWebview
.loadData(
"file:///android_asset/index.html"
);
但你会发现,如果点击页面的某条链接进行跳转的话,会启动系统的默认浏览器进行加载,调出了我们本身的应用。要解决这个问题我们需要借助于WebViewClient。
[自定义链接的跳转显示]
mWebview
.setWebChromeClient(
new
WebViewClient() {
/**
* 自定义网页加载
*/
public
boolean
shouldOverrideUrlLoading(WebView view, String url){
// 使用当前的WebView加载页面
view.loadUrl(url);
return
true
;
}
});
在WebViewClient中还有很多的方法,例如:
/**
* 网页开始加载
*/
public
void
onPageStarted(WebView view, String url, Bitmap favicon);
/**
* 网页加载完毕(仅指主页,不包括图片)
*/
public
void
onPageFinished(WebView view, String url);
/**
* 加载页面资源
*/
public
void
onLoadResource(WebView view, String url)
/**
* 错误提示
*/
public
void
onReceivedError(WebView view,
int
errorCode, String description, String failingUrl)
我们都可以通过重写来实现自己的个性化操作。
[页面回退]
实现了跳转后,你忽然想返回到前一个浏览过的页面是,发现返回键是直接退出应用了。要实现类似系统浏览器那样的,返回键先是返回到上一个页面,直到最初始的页面才退出的话,可以这么做:
// 重写onKeyDown
public
boolean
onKeyDown
(
int
keyCode, KeyEvent event) {
if
((keyCode == KeyEvent.
KEYCODE_BACK
) &&
mWebview
.canGoBack()) {
mWebview
.goBack();
return
true
;
}
return
super
.onKeyDown(keyCode, event);
}
[进度条]
要是再加上加载进度条那就完美了,我们可以借助WebChromeClient来实现:
mWebview
.setWebChromeClient(
new
WebChromeClient()
{
/**
* 进度条发生变化
*/
public
void
onProgressChanged
(WebView view,
int
newProgress){
loadingProgress
.setProgress(newProgress);
}
});
>>更多的WebView的使用说明请参考API文档。
分享到:
相关推荐
Android 原生浏览器内核,包名 com.android.webview,内核版本116。 适用版本:Android API 24 及以上版本。 com.android.webview_116.0.5845.163-minAPI24.apk
自定义webview中的网页“拍照”按钮调用系统相机拍照的API接口MyBrowserAPI.CapturePhoto(filename),在网页JavaScript中调用以后返回存放照片的完整路径名,默认将照片存放在系统SD卡的根目录,包含整个工程中需要添加...
English | 简体中文 ...support Android API 8 , avoid addJavascriptInterface Vulnerability compatible with iOS WebViewJavascriptBridge Getting Started Download the latest JAR or Gradle: compil
从 Android API 11 (3.0) 开始,WebView 开始在 WebViewClient 内提供了这样一条 API ,如下: public WebResourceResponse shouldInterceptRequest(WebView view, String url) 就是说只要实现 WebViewClient ...
在Api中关于这个类的介绍大致就是这是一个可以显示网页的视图,如: webView.loadUrl(http://www.baidu.com/); 显示结果: 还可以加载一些html的字符串,如: String str = <html><body>You scored ...
JS调用Android Native API,在webview中通过js代码调用本地的java代码,比如:可以通过网页中的js代码调用android的音频服务播放音乐等等
android 平台上的html5webview 源码
从Android 2.2 (也就是API 8)开始,WebView新增加了一个接口方法,就是为了便于我们加载网页时又想发送其他的HTTP头信息的。 代码如下: public void loadUrl (String url, Map<String> additiona
Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用WebView.addJavascriptInterface方法,远程攻击者可通过使用Java Reflection API利用该漏洞执行任意Java对象的方法...
有关适用于Android的最新Webview +,请访问位于的新Cocoon Cloud。 新的Cocoon云完全基于Cordova,并具有增强的功能,其中包括:最新的Webview +,新的Cocoon插件,更好的Developer App,对所有Cordova插件的支持...
SlidingLayout是一种Android平台的View...SlidingLayout完美兼容Android自带库和兼容库的所有View组件,包括RecyclerView、ListView、ScrollView以及WebView等等。 SlidingLayout简单易用,最低支持Android api v9。
Android WebView 加载网页url中,H5通过js获取位置定位信息。 /** * 地图相关 */ window.init = function() { var map = new AMap.Map('mapContainer', { resizeEnable: true, zoom: 14 }); /*获取实时...
Actively maintained and tested up to Android 4.4 (API level 19) with its new Chromium webview. Motivation Android's default WebView doesn't work well with HTML5 videos (i.e. the <video> tag). ...
需求:Android调用webView加载网页的时候,拦截某一个链接不执行此链接,执行指定跳转到其他activity页面。 webview的setWebViewClient方法中提供了几个api: // 此回调是拦截点击要跳转的url链接,并对请求的url...
2.‘webView.createPrintDocumentAdapter()’得到打印的PrintDocumentAdapter有了该类就可以使用onWrite方法写入制定的文件,但是这个方法需要传入回调这个悲剧的是这个回调方法是hiden的我们没办法调用 3,字怎么...
1. 封装原生 webview,使用 WebViewClient 与 WebChromeClient 2. H5 调用 Native 采用 js prompt 方式 3. Native 调用 H5 采用 loadurl API 使用说明: errorview 和 loadingview 可以自定义 对 WebView 设置...
tbs_res_imtt_tbs_release_tbs_core_3.8.0.2059_043906_20180119_142303 ...Android Studio用户可在module的build.gradle文件的dependencies中添加 api 'com.tencent.tbs.tbssdk:sdk:43903'直接接入
随着手机性能的提高,以及iOS和Android两个平台的普及,更多的App都会选择两个平台的App都进行开发,在有些时候,为了更加快速的开发,我们会采用hybird方式开发,这个时候我们需要使用webview并且自己进行一些配置...
4、WebView方面还在学习,使用的是android自带的WebView。 5、整个界面风格比较简约,使用android的CoordinatorLayout结合ToolBar和FloatingActionButton做动态布局,主题切换采用的是淡进淡出的效果。 6、使用...
玩一玩WebView常用API基本使用1.添加网络权限2.实例化WebView3.设置WebClient4.设置WebChromeClient5.如何和JS交互网页通过Scheme方式跳转其他应用1.scheme是什么?2.网页如果跳转app?3.推荐做法三.一些小坑四.发散...