900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > android定位坑简书 android webview 定位问题

android定位坑简书 android webview 定位问题

时间:2023-11-16 12:00:02

相关推荐

android定位坑简书 android webview 定位问题

最近在做安卓的网页开发。有一个页面需要用到定位,但是一直定位获取失败。很难过。网上教程也很多,但是无一例外全部失败。最后老夫花了3天时间,呕心沥血,终于研制出了解决方案。

三步走战略:

一、获取权限

android 6.0 以后,需要动态的获取位置或者存储权限,按照各自的爱好放置位置。我是应用开启初始化的时候,放在MainActivity中的OnCreate方法里。

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)

!= PackageManager.PERMISSION_GRANTED

|| ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)

!= PackageManager.PERMISSION_GRANTED

|| ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)

!= PackageManager.PERMISSION_GRANTED) {

Toast.makeText(getApplicationContext(),"没有权限,请手动开启定位权限",Toast.LENGTH_SHORT).show();

// 申请一个(或多个)权限,并提供用于回调返回的获取码(用户定义)

ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);

return false;

}

二、webview setting 设置(复制了别人代码)

WebView webView = (WebView)findViewById(R.id.webview);

WebSettings webSettings = webView.getSettings();

//webview支持js脚本

webSettings.setJavaScriptEnabled(true);

//启用数据库

webSettings.setDatabaseEnabled(true);

//设置定位的数据库路径

String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();

webSettings.setGeolocationDatabasePath(dir);

//启用地理定位

webSettings.setGeolocationEnabled(true);

//开启DomStorage缓存

webSettings.setDomStorageEnabled(true)

//配置权限

webView.setWebChromeClient(new WebChromeClient() {

@Override

public void onReceivedIcon(WebView view, Bitmap icon) {

super.onReceivedIcon(view, icon);

}

@Override

public void onGeolocationPermissionsShowPrompt(String origin,Callback callback) {

callback.invoke(origin, true, false);

super.onGeolocationPermissionsShowPrompt(origin, callback);

}

});

三 网络权限

网上的教程到这里就结束了。一般都会告诉你,朋友你定位能用了。然而我并不能用啊!!!

检查来检查去。没啥毛病啊。一模一样啊!

四 build gradle (我用的是as )修改

自己app的build.gradle 里面一个targetSdkVersion 23 (为什么写23 高德地图告诉我的)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。