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

android 与H5交互之使用GPS定位

2016-03-07 16:17 288 查看
方法很简单 ,设置 WebSettings 和 WebChromeClient 就ok

不过在这之前要先配置权限(有两个地方)

一个是清单文件中

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


一个是在 WebChromeClient 中实现的方法

// 配置权限
private class MyWebChromeClient extends WebChromeClient
{
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback)
{
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
}


然后呢就是主要代码:

WebSettings webSettings = webView.getSettings();
//启用数据库
webSettings.setDatabaseEnabled(true);
String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
// 启用地理定位
webSettings.setGeolocationEnabled(true);
// 设置定位的数据库路径
webSettings.setGeolocationDatabasePath(dir);
// 最重要的方法,一定要设置,这就是出不来的主要原因 原因请看参考链接(Android WebView 无法打开天猫页面)
webSettings.setDomStorageEnabled(true);
private class MyWebChromeClient extends WebChromeClient
{
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback)
{
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
}


后面的参考已经不仅仅是说在H5中定位,有兴趣自己了解,

参考:

[Android WebView 无法打开天猫页面]

(http://ryanhoo.github.io/blog/2014/09/17/android-webview-setdomstorageenabled/);

[Web_Storage_API]

(https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API);

StakeOverflow: What does “enable DOM storage API”

mean?(http://stackoverflow.com/questions/5858760/what-does-enable-dom-storage-api-mean);

[Dive into HTML5: LOCAL STORAGE]

(http://diveintohtml5.info/detect.html)

[HTML5之Web Storage(本地存储)详解] (http://blog.baiwand.com/?post=184)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: