当前位置: 代码迷 >> 综合 >> webview 加载 html 获取gps定位
  详细解决方案

webview 加载 html 获取gps定位

热度:70   发布时间:2024-02-12 01:05:29.0

背景:

Android端 webview 加载链接,html获取gps定位,一直返回用户拒绝定位请求权限;需要通过如下配置

1、Android 端

清单文件

<!-- 网络权限,加载网络网页需要联网 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 粗略定位权限,允许一个程序通过网络获取粗略的位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 精确定位权限,允许一个程序访问精确位置(GPS定位) -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

添加应用的权限请求

private void checkPermission() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {if (MainActivity.this.checkSelfPermission(permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&MainActivity.this.checkSelfPermission(permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {requestPermissions(new String[]{permission.ACCESS_FINE_LOCATION,permission.ACCESS_COARSE_LOCATION}, 100);} else {initLocation();}} else {initLocation();}}

webview(注意“// ------添加如下的配置--------”)

WebSettings settings = webView.getSettings();settings.setJavaScriptEnabled(true);settings.setDomStorageEnabled(true);//开启DOM//----------添加如下-----------settings.setGeolocationEnabled(true); // 允许定位//设置定位的数据库路径String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();settings.setGeolocationDatabasePath(dir);//-------------------------settings.setCacheMode(WebSettings.LOAD_NO_CACHE);// 这个是监听js端的log,用来测试webView.setWebChromeClient(new WebChromeClient() {// ----------添加如下-----------@Overridepublic void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {// //重写此方法,配置权限callback.invoke(origin, true, false);super.onGeolocationPermissionsShowPrompt(origin, callback);}// -------------------------------});webView.loadUrl(url);

 

  相关解决方案