Android进阶2之WebView(浏览器)

原创 2012年03月25日 22:26:10
一 概述
WebView是一个显示网页的视图。它依据于你自己的网页浏览器或者只是显示在你的Activity中的内容。
它使用了WebKit渲染引擎显示网页。它包括一些方法:通过浏览记录向前和向后浏览,放大,缩小,进行文本搜索等等。
实现内置的放大缩小使用 WebSettings.setBuiltInZoomControls(boolean)。
注意:为了使您的Activity能够上网,在WebView加载网页,你必须添加 INTERNET permissions 到你的 Android Manifest文件中去。
<uses-permission android:name="android.permission.INTERNET" />
二 操作步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
   你也可以在布局文件中声明WebView,在Activity中实例化WebView。
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
   互联网用:webView.loadUrl("http://www.baidu.com");
   本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
三 注意事项
在开发过程中应该注意几点: 
    1.AndroidManifest.xml中必须添加权限"android.permission.INTERNET"。
<uses-permission android:name="android.permission.INTERNET" />

    2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
       
webview.getSettings().setJavaScriptEnabled(true);

    3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。
  
webview.setWebViewClient(new WebViewClient(){       
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {       
                        view.loadUrl(url);       
                        return true;       
                    }       
        });  

      4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。

public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
            webview.goBack(); //goBack()表示返回WebView的上一页面 
            return true; 
        } 
        return false; 
    } 



具体实现:


package xiaosi.webview;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
public class MyWebViewActivity extends Activity { 
    private WebView webview; 
    @Override
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        webview = (WebView) findViewById(R.id.webview); 
        //设置WebView属性,能够执行Javascript脚本 
        webview.getSettings().setJavaScriptEnabled(true); 
        //加载需要显示的网页 
        webview.loadUrl("http://www.baidu.com/"); 
        //设置Web视图 
        webview.setWebViewClient(new HelloWebViewClient ()); 
    } 
     
    @Override
    //设置回退 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
            webview.goBack(); //goBack()表示返回WebView的上一页面 
            return true; 
        } 
        return false; 
    } 
     
    //Web视图 
    private class HelloWebViewClient extends WebViewClient { 
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) { 
            view.loadUrl(url); 
            return true; 
        } 
    } 
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android进阶2之WebView(浏览器)

一 概述 WebView是一个显示网页的视图。它依据于你自己的网页浏览器或者只是显示在你的Activity中的内容。 它使用了WebKit渲染引擎显示网页。它包括一些方法:通过浏览记录向前和向后浏览,...
  • wujiaqi168
  • wujiaqi168
  • 2013年12月19日 19:15
  • 420

android:webview实现简单的浏览器

实现了浏览器的返回 前进 主页 退出 输入网址的功能 注释的很清楚啦  就不多说了 首先是布局文件 ...
  • su20145104009
  • su20145104009
  • 2016年02月22日 10:54
  • 4587

解决Android中WebView跳转到浏览器的问题

//如果不设置WebViewClient,请求会跳转系统浏览器 webView.setWebViewClient(new WebViewClient() { @...
  • qianlima210210
  • qianlima210210
  • 2016年09月24日 12:10
  • 7532

Android 内置浏览器之webview

目录:         1.webview概述             2.webview常用方法         3.webview基本使用                 3.1 真的...
  • qq_28057577
  • qq_28057577
  • 2017年02月22日 13:20
  • 4130

Android 面试题总结之Android 进阶(一)

Android 面试题总结之Android 进阶(一) 在前几篇文章中都是讲的基础,大家应该会觉得非常熟悉,但往往我们可能对于基础某些细节认识不够彻底或贯穿不全,我一直认为基础都是比较难的,那么本...
  • vfush
  • vfush
  • 2016年06月08日 16:26
  • 15159

Android强制使用WebView不调用系统或外部浏览器

HTML5 HYBIRD混合APP需要在H5页面中打开第三方网站(例如:百度),android默认不在当前WebView中打开,反而会调用系统或外部浏览器,解决办法是自己重写WebViewClient...
  • yctccg
  • yctccg
  • 2016年08月16日 10:44
  • 369

[Android] 使用 WebView 加载网页而不调用外部浏览器

在使用 WebView 当加载网页时,默认会调用系统的默认外部浏览器来加载页面,原因是因为 WebViewClient 中的 shouldOverrideUrlLoading 方法默认返回为false...
  • yuxin1100
  • yuxin1100
  • 2016年06月15日 17:35
  • 10145

android webview loadurl弹出系统浏览器问题

APP套壳,  使用WebView.loadUrl("xxx"); 总是弹出系统浏览器,  网上搜索解决方案,  要重新设置: webview.setWebViewClient(new WebVie...
  • wqhjfree
  • wqhjfree
  • 2015年10月22日 17:07
  • 7941

使用webview打开浏览器

第一种方式public class MainActivity extends Activity { private WebView webView; @Override prote...
  • a_sid
  • a_sid
  • 2017年06月01日 11:34
  • 398

android 设置webview的浏览器标识 User-Agent

为了便于WEB端统计分析,需要将APP的 user-agent 作特征标记,所以搜索了一下android对webview的User-Agent设置方法,具体如下: // 修改ua使得web端正确...
  • msn465780
  • msn465780
  • 2016年05月12日 18:16
  • 9250
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android进阶2之WebView(浏览器)
举报原因:
原因补充:

(最多只允许输入30个字)