关闭

WebView显示网页

147人阅读 评论(0) 收藏 举报
分类:

WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。

webview有两个方法:setWebChromeClient 和 setWebClient

setWebClient:主要处理解析,渲染网页等浏览器做的事情

setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等

WebViewClient就是帮助WebView处理各种通知、请求事件的。

在AndroidManifest.xml设置访问网络权限:

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

WebView控件:

<WebView 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/webView"
    />

用途一:加载本地/Web资源
example.html 存放在assets文件夹内

调用WebView的loadUrl()方法,

加载本地资源

webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("file:///android_asset/example.html");

加载web资源:

webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("http://baidu.com");

用途二:在程序内打开网页

创建一个自己的WebViewClient,通过setWebViewClient关联

package com.example.testopen;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {
private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);             
        init();

    }


    private void init(){
        webView = (WebView) findViewById(R.id.webView);
        //WebView加载web资源
       webView.loadUrl("http://baidu.com");
        //当点击一个页面中一个链接时会经过shouldOverrideUrlLoading。return true时,你可以自己来处理这个url,webview则不再处理这个url;return false时,webview来处理这个url。
//通俗的说,当返回true时,点任何链接都是失效的,需要自己写代码跳转。return false时webview会自己跳转。
       webView.setWebViewClient(new WebViewClient(){
           @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

             view.loadUrl(url);
            return true;
        }
       });
    }

}

用途三:

如果访问的页面中有Javascript,则webview必须设置支持Javascript

//启用支持javascript
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);

用途四:

如果希望浏览的网页后退而不是退出浏览器,需要WebView覆盖URL加载,让它自动生成历史访问记录,那样就可以通过前进或后退访问已访问过的站点。

//改写物理按键——返回的逻辑
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode==KeyEvent.KEYCODE_BACK)
        {
            if(webView.canGoBack())
            {
                webView.goBack();//返回上一页面
                return true;
            }
            else
            {
                System.exit(0);//退出程序
            }
        }
        return super.onKeyDown(keyCode, event);
    }

用途五:判断页面加载过程

   webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                // TODO Auto-generated method stub
                if (newProgress == 100) {
                    // 网页加载完成

                } else {
                    // 加载中

                }

            }
        });

用途六:缓存的使用
优先使用缓存:

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

不使用缓存:

webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

相关参考:
http://www.cnblogs.com/tinyphp/p/3858997.html

0
0
查看评论

Android WebView 加载网页只显示空白页不显示网页

Android 在使用WebView控件将网页嵌入应用的时候有时会遇到页面显示不出来或者显示为空白页的情况    我在项目中也遇到了这个问题 , 尝试了很多方法都没有解决问题 ,最终找到了解决方法:    WebSettings webSet...
  • juesai2015
  • juesai2015
  • 2017-10-11 17:23
  • 230

Android-使用WebView显示网页

Android-使用WebView显示网页WebView是安卓提供显示web界面的工具类,可以像PC端的浏览器那样进行显示: 大致就是上图那样。其实也可以不用WebView,简单的三行代码就可以在安卓App上显示网页界面。示例Uri uri = Uri.parse("http://w...
  • ACM_TH
  • ACM_TH
  • 2016-03-30 09:37
  • 2013

android webView 不能上网 无法打开网页的问题

近期学习WebView也是遇到了一个问题,花自己比较多的时间查询,最后发现仅仅是因为大小写的问题导致不能上网,也是心累,自己平时写代码当更加注意才是,在此分享一下遇到的问题,希望大家遇到了都能随即解决,接下来看代码。 主要是AndroidManifest.xml中对权限的设置。 ...
  • Double2hao
  • Double2hao
  • 2015-09-05 11:17
  • 2753

Android——使用WebView显示网页

1.引言:通过Intent调用系统浏览器 Uri uri = Uri.parse(url); //url为你要链接的地址 Intent intent = new Intent(Intent.ACTION_VIEW,uri); startActivity(intent);2.步骤 (1).活动布...
  • S415X
  • S415X
  • 2016-08-19 17:07
  • 4652

安卓加载webView只显示部分网页的方法

安卓加载webView只显示部分网页的方法如果我们需要用WebView加载一个网页但是又不想让用户看到一些元素,比如这个搜索框 这个时候我们就需要在加载url的时候用js代码动态去隐藏这些元素。具体的做法如下: 1.在浏览器中打开需要加载的网页,鼠标右键,选择检查,找到需要隐藏的元素的div标签的c...
  • benhuo931115
  • benhuo931115
  • 2016-08-11 10:36
  • 4451

WebView 只在屏幕左半边显示网页内容的问题

问题如图所示。 Activity WebView 设置的代码 contentView = (WebView)this.findViewById(R.id.content); WebSettings mWebSettings ...
  • yaojuanmu2785
  • yaojuanmu2785
  • 2017-01-02 02:11
  • 427

Android webView打不开网页的解决办法

在我们开发过程中,有可能会遇到webview有些网页打不开的问题。这可能是设置的不对,下面就是解决办法。 进行如下设置吧,大多数情况都能解决! displayWebview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);...
  • a65172017
  • a65172017
  • 2016-01-26 10:16
  • 1628

Android 5.0中使用webView 加载网页不显示图片问题

android.util.Log.i("url", "htmlDetails: "+url); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(...
  • u010642308
  • u010642308
  • 2016-11-15 08:55
  • 4608

android webview显示网页空白问题

前几天遇到了网页显示不全问题,今天我的人又遇到了网页空白问题,解决不了了,然后我去了。 两个有什么区别呢,前几天遇到的网页显示不全,网页已经加载完了,可是今天的网页空白问题,网页没有加载完,也就是没看到走finish方法,所以一看就是网络问题,由于是给银行做项目,网络管理很严,所以我直接确定是网络...
  • u011449334
  • u011449334
  • 2016-12-28 14:03
  • 882

android:使用webview显示网页

学到现在。。懵懵懂懂  还是先上运行结果 大家看到返回的时候要点很多次返回 。这是因为页面会有快速跳转过程 所以多按几次返回把 没办法 布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/...
  • su20145104009
  • su20145104009
  • 2016-02-21 23:39
  • 1483
    个人资料
    • 访问:25765次
    • 积分:485
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:2篇
    • 译文:4篇
    • 评论:1条
    文章分类
    最新评论