这篇文章主要介绍了Android中WebView中无法定位怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
实例如下
WebSettings settings = wbContent.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setGeolocationEnabled(true);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
settings.setGeolocationDatabasePath(dir);
webChromeClient = new WebChromeClient(){
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, true);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
};
wbContent.setWebChromeClient(webChromeClient);
wbContent.loadUrl("https://xxxxxxxxxxxxxxxxxxxxxxxx");
网上很多地方说加了这段代码之后就可以正常定位了,然而我加上之后还是没有什么卵用。没办法,百度就是没谷歌给力。
看了下日志,说我没有获取到权限,但是代码中的callback.invoke(origin, true, true);是获取定位权限的操作啊。
我想了想,突然想到了6.0之后要动态申请权限。
我这样加入动态申请权限的代码
if (Build.VERSION.SDK_INT >= 23) {
int checkPermission = ContextCompat.checkSelfPermission(LocationTestActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION);
if (checkPermission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(LocationTestActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
ActivityCompat.requestPermissions(LocationTestActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}else {
wbContent.loadUrl("https://xxxxxxxxxxxxxxxxxxxxxxxx");
}
}
发现这样就能正常的获取到定位的结果,有的人可能不知道要在哪里动态申请,其实这要看你具体的流程,你也可以在跳转到这个页面的时候申请,也可以在展示网页的时候申请。
最后说一下,onGeolocationPermissionsShowPrompt这个方法只会调用一次,和动态申请权限一样,只会在第一次调用。
感谢你能够认真阅读完这篇文章,希望小编分享的“Android中WebView中无法定位怎么办”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。