1

I have gone through the following SO links to show geolocation into WebView but still location is not showing in WebView but works proper in mobile browser.

SO Link 1

SO Link 2

I have added following permissions into 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" />

implemented onGeolocationPermissionsShowPrompt.

Added following lines:

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");

But still there is no success.

Here is my javascript which executes on getLocation button:

<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> 
Community
  • 1
  • 1
Faisal Shaikh
  • 3,900
  • 5
  • 40
  • 77
  • Did you ever find a solution to this? I'm stuck on the same problem http://stackoverflow.com/questions/44016206/android-webview-user-denied-geolocation-javascript – Ego Placebo May 18 '17 at 05:03

1 Answers1

0

have you over-ridden onGeolocationPermissionsShowPrompt method in your webview's WebChromeClient ?