android 与H5交互之GPS定位

方法很简单 ,设置 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 无法打开天猫页面)
// 配置权限 
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 无法打开天猫页面;
Web_Storage_API;
StakeOverflow: What does “enable DOM storage API”mean?
Dive into HTML5: LOCAL STORAGE
HTML5之Web Storage(本地存储)详解

    原文作者:NapleC
    原文地址: https://www.jianshu.com/p/de1b2f902f1e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞