webview加载网页地址

今天想实现一个用webview调用uri实现加载百度导航的功能。如加载这个地址:http://map.baidu.com  这个是手机上的百度地图地址,浏览器上输入即可进入

刚开始很简单几行代码加载出来了,但是地图没出来,百度了一下,加上webSettings.setDomStorageEnabled(true); 就可以了。

先看代码,代码粘贴如下:

xm代码如下(一个简单的webview):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >


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


</LinearLayout>


activity中代码如下:

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

	
	WebView wv;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		wv = (WebView) findViewById(R.id.webview);  
		WebSettings webSettings = wv.getSettings();
		webSettings.setJavaScriptEnabled(true);  
		webSettings.setDomStorageEnabled(true); //加此行即可出来百度地图
		
		// 加载需要显示的网页
		wv.loadUrl("http://map.baidu.com");
		// 设置Web视图
		wv.setWebViewClient(new HelloWebViewClient());

		// 此方法可以处理webview 在加载时和加载完成时一些操作
		wv.setWebChromeClient(new WebChromeClient() {
			public void onProgressChanged(WebView view, int newProgress) {
				if (newProgress == 100) {
					// 这里是设置activity的标题, 也可以根据自己的需求做一些其他的操作
					//title.setText("加载完成");
				} else {
					//title.setText("加载中.......");
				}
			}
		});
	}
	public boolean onKeyDown(int keyCoder,KeyEvent event){  
        if(wv.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){  
                 wv.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;
		}
	}
}

 

接下来写一下webview使用注意的些东西

1、调用WebView的loadUrl( )方法,设置WevView要显示的网页

2、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。给WebView添加一个事件监听对象(WebViewClient)并重写其中的一些方法:

shouldOverrideUrlLoading:对网页中超链接按钮的响应。当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url

另外还有其他一些可重写的方法 
onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) 接收到Http请求的事件

public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } 打开链接前的事件这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。

public void onPageFinished(WebView view, String url){ } 载入页面完成的事件

同样道理,我们知道一个页面载入完成,于是我们可以关闭loading条,切换程序动作。

public void onPageStarted(WebView view, String url, Bitmap favicon) { } 载入页面开始的事件

这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。



3、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面

4、需要在AndroidManifest.xml文件中添加权限

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







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值