`
univasity
  • 浏览: 801389 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[Android API 学习]WebView基本使用

阅读更多

 

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 );
// 简单地加载一个页面
mWebview .loadUrl(url);
// 加载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文档。
分享到:
评论
1 楼 sgjsdf5944 2013-10-17  
楼主你好,如果点击页面的某条链接进行跳转的话,会启动系统的默认浏览器进行加载。我就用webView加装一个页面,该页面重定向到另一个页面,2.3在应用内加载而4.0下却启用了浏览器。这是怎么回事?希望楼主解答下,谢谢!

相关推荐

    Android WebView.apk 浏览器内核 com.android.webview

    Android 原生浏览器内核,包名 com.android.webview,内核版本116。 适用版本:Android API 24 及以上版本。 com.android.webview_116.0.5845.163-minAPI24.apk

    Android下WebView中调用系统相机拍照范例

    自定义webview中的网页“拍照”按钮调用系统相机拍照的API接口MyBrowserAPI.CapturePhoto(filename),在网页JavaScript中调用以后返回存放照片的完整路径名,默认将照片存放在系统SD卡的根目录,包含整个工程中需要添加...

    Android代码-简单方便的WebView和Javascript双向交互的框架

    English | 简体中文 ...support Android API 8 , avoid addJavascriptInterface Vulnerability compatible with iOS WebViewJavascriptBridge Getting Started Download the latest JAR or Gradle: compil

    在Android环境下WebView中拦截所有请求并替换URL示例详解

    从 Android API 11 (3.0) 开始,WebView 开始在 WebViewClient 内提供了这样一条 API ,如下: public WebResourceResponse shouldInterceptRequest(WebView view, String url) 就是说只要实现 WebViewClient ...

    Android使用原生组件WebView加载网页和数据的方法

    在Api中关于这个类的介绍大致就是这是一个可以显示网页的视图,如: webView.loadUrl(http://www.baidu.com/); 显示结果: 还可以加载一些html的字符串,如: String str = &lt;html&gt;&lt;body&gt;You scored ...

    JS调用Android Native API

    JS调用Android Native API,在webview中通过js代码调用本地的java代码,比如:可以通过网页中的js代码调用android的音频服务播放音乐等等

    html5webview

    android 平台上的html5webview 源码

    Android中Webview打开网页的同时发送HTTP头信息方法

    从Android 2.2 (也就是API 8)开始,WebView新增加了一个接口方法,就是为了便于我们加载网页时又想发送其他的HTTP头信息的。 代码如下: public void loadUrl (String url, Map&lt;String&gt; additiona

    关于Android中WebView远程代码执行漏洞浅析

     Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用WebView.addJavascriptInterface方法,远程攻击者可通过使用Java Reflection API利用该漏洞执行任意Java对象的方法...

    webview-plus:在任何Android 4.x设备上的统一Webview

    有关适用于Android的最新Webview +,请访问位于的新Cocoon Cloud。 新的Cocoon云完全基于Cordova,并具有增强的功能,其中包括:最新的Webview +,新的Cocoon插件,更好的Developer App,对所有Cordova插件的支持...

    Android 类似QQ微信WebView的上拉下拉弹跳效果

    SlidingLayout是一种Android平台的View...SlidingLayout完美兼容Android自带库和兼容库的所有View组件,包括RecyclerView、ListView、ScrollView以及WebView等等。 SlidingLayout简单易用,最低支持Android api v9。

    Android6.0(Api23)以后 WebView定位失效问题

    Android WebView 加载网页url中,H5通过js获取位置定位信息。 /** * 地图相关 */ window.init = function() { var map = new AMap.Map('mapContainer', { resizeEnable: true, zoom: 14 }); /*获取实时...

    Android代码-VideoEnabledWebView

    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 &lt;video&gt; tag). ...

    解决Android WebView拦截url,视频播放加载失败的问题

    需求:Android调用webView加载网页的时候,拦截某一个链接不执行此链接,执行指定跳转到其他activity页面。 webview的setWebViewClient方法中提供了几个api: // 此回调是拦截点击要跳转的url链接,并对请求的url...

    Android webview转PDF的方法示例

    2.‘webView.createPrintDocumentAdapter()’得到打印的PrintDocumentAdapter有了该类就可以使用onWrite方法写入制定的文件,但是这个方法需要传入回调这个悲剧的是这个回调方法是hiden的我们没办法调用 3,字怎么...

    Android代码-Andorid-LiteHybrid-WebView

    1. 封装原生 webview,使用 WebViewClient 与 WebChromeClient 2. H5 调用 Native 采用 js prompt 方式 3. Native 调用 H5 采用 loadurl API 使用说明: errorview 和 loadingview 可以自定义 对 WebView 设置...

    X5WebView 静态集成 SO包

    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'直接接入

    Android WebView使用的技巧与一些坑

    随着手机性能的提高,以及iOS和Android两个平台的普及,更多的App都会选择两个平台的App都进行开发,在有些时候,为了更加快速的开发,我们会采用hybird方式开发,这个时候我们需要使用webview并且自己进行一些配置...

    Android代码-gankiodemo

    4、WebView方面还在学习,使用的是android自带的WebView。 5、整个界面风格比较简约,使用android的CoordinatorLayout结合ToolBar和FloatingActionButton做动态布局,主题切换采用的是淡进淡出的效果。 6、使用...

    Android网页加载控件WebView应知应会

    玩一玩WebView常用API基本使用1.添加网络权限2.实例化WebView3.设置WebClient4.设置WebChromeClient5.如何和JS交互网页通过Scheme方式跳转其他应用1.scheme是什么?2.网页如果跳转app?3.推荐做法三.一些小坑四.发散...

Global site tag (gtag.js) - Google Analytics