今天想实现一个用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使用注意的些东西
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的页面,告诉用户程序在等待网络响应。