问题描述:
在uc等浏览器访问地址可以正常定位,但是在webView里面访问不能定位,显示:不支持浏览器定位,权限拒绝,但是该app已经具有定位权限了.
原因:
最大目标系统版本达到6.0 (API level > M)时,在请求不是https等安全来源的时候自动拒绝获取地理位置信息,而不调用重载的onGeolocationPermissionsShowPrompt( )方法.
##解决:
#####(1) Android Studio中到File->Project Structure里面的Flavors项把最高版本调为5.0的就好了。
#####(2)代码
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//定位
settings.setDatabaseEnabled(true);
String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
settings.setGeolocationEnabled(true);
//路径
settings.setGeolocationDatabasePath(dir);
settings.setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
});
#####(3)权限
//定位权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />