今天想实现一个用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
public void onPageFinished(WebView view, String url){ } 载入页面完成的事件
同样道理,我们知道一个页面载入完成,于是我们可以关闭loading条,切换程序动作。
public void onPageStarted(WebView view, String url, Bitmap favicon) { } 载入页面开始的事件
这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。