android webview地理定位不起作用

Posted

技术标签:

【中文标题】android webview地理定位不起作用【英文标题】:android webview geolocation is not working 【发布时间】:2016-08-05 12:47:19 【问题描述】:

我已经通过以下 SO 链接将地理位置显示到 WebView 中,但位置仍然没有显示在 WebView 中,但在移动浏览器中可以正常工作。

SO Link 1

SO Link 2

我在 WebView 中添加了以下权限:

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_GPS" />
    <uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION" />

已实现onGeolocationPermissionsShowPrompt

添加了以下几行:

homesite.getSettings().setjavascriptEnabled(true);
homesite.getSettings().setAppCacheEnabled(true);
homesite.getSettings().setDatabaseEnabled(true);
homesite.getSettings().setDomStorageEnabled(true);
homesite.getSettings().setBuiltInZoomControls(true);
homesite.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
homesite.addJavascriptInterface(new WebAppInterface(this.getActivity()), "Android");

但是还是没有成功。

这是我在 getLocation 按钮上执行的 javascript:

<script>
var x = document.getElementById("geodemo");
function getLocation() 
    if (navigator.geolocation) 
        navigator.geolocation.getCurrentPosition(showPosition, showError);
     else 
        x.innerhtml = "Geolocation is not supported by this browser.";
    

function showPosition(position) 
    var latlon = position.coords.latitude + "," + position.coords.longitude;

    var img_url = "http://maps.googleapis.com/maps/api/staticmap?center="
    +latlon+"&zoom=14&size=400x300&sensor=false";
    document.getElementById("mapholder").innerHTML = "<img src='"+img_url+"'>";

function showError(error) 
    switch(error.code) 
        case error.PERMISSION_DENIED:
            x.innerHTML = "User denied the request for Geolocation."
            break;
        case error.POSITION_UNAVAILABLE:
            x.innerHTML = "Location information is unavailable."
            break;
        case error.TIMEOUT:
            x.innerHTML = "The request to get user location timed out."
            break;
        case error.UNKNOWN_ERROR:
            x.innerHTML = "An unknown error occurred."
            break;
    

</script> 

【问题讨论】:

您找到解决方案了吗?我遇到了同样的问题***.com/questions/44016206/… 【参考方案1】:

您是否在 webview 的 WebChromeClient 中覆盖了 onGeolocationPermissionsShowPrompt 方法?

【讨论】:

是的,我已经覆盖了onGeolocationPermissionsShowPrompt

以上是关于android webview地理定位不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView 地理位置不起作用

Cordova 地理定位插件在 android 设备上不起作用

android上的javascript地理定位在离线模式下不起作用

地理定位 API 在某些 Android 设备上不起作用

GPS 地理定位应用程序在 Android 的 Phonegap 中不起作用

Android webview html5地理定位