您的位置:首页 > 移动开发

android:如何开启webview的LBS功能

2013-12-27 11:57 363 查看
不做过多解释代码全贴在下面。

首先想要用到手机的LBS功能,必须在androidManifest.xml中请求权限.

[html]
view plaincopyprint?

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

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


webview加载URL以及相关设置

[html]
view plaincopyprint?

private void loadUrl(){ browser.getSettings().setJavaScriptEnabled(true); browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); browser.getSettings().setGeolocationEnabled(true); GeoClient geo = new GeoClient(); browser.setWebViewClient(new PTCWebViewClient(this, browser)); browser.setWebChromeClient(geo); String origin = ""; geo.onGeolocationPermissionsShowPrompt(origin, this); browser.loadUrl("http://www.mytransport.sg"); }

private void loadUrl(){
browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
browser.getSettings().setGeolocationEnabled(true);
GeoClient geo = new GeoClient();
browser.setWebViewClient(new PTCWebViewClient(this, browser));
browser.setWebChromeClient(geo);
String origin = "";
geo.onGeolocationPermissionsShowPrompt(origin, this);
browser.loadUrl("http://www.mytransport.sg");
}


PTCWebViewClient.java

[java]
view plaincopyprint?

public class PTCWebViewClient extends WebViewClient { private ProgressDialog pd; public PTCWebViewClient(Context con, final WebView web){ pd = new ProgressDialog(con); pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); pd.setTitle("MTC LTA"); pd.setMessage("Loading, please wait..."); pd.setIcon(R.drawable.icon); pd.setButton("Cancel", new ProgressDialog.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { web.stopLoading(); } }); pd.setIndeterminate(false); pd.setCancelable(true); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); pd.show(); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); pd.dismiss(); } }

public class PTCWebViewClient extends WebViewClient {

private ProgressDialog pd;

public PTCWebViewClient(Context con, final WebView web){
pd = new ProgressDialog(con);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setTitle("MTC LTA");
pd.setMessage("Loading, please wait...");
pd.setIcon(R.drawable.icon);
pd.setButton("Cancel", new ProgressDialog.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
web.stopLoading();
}
});
pd.setIndeterminate(false);
pd.setCancelable(true);
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
pd.show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
pd.dismiss();
}
}


GeoClient.java

[java]
view plaincopyprint?

class GeoClient extends WebChromeClient {

@Override
public void onGeolocationPermissionsShowPrompt(String origin,
Callback callback) {
super.onGeolocationPermissionsShowPrompt(origin, callback);
callback.invoke(origin, true, false);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: