无法获得GPS坐标在Android浏览器使用Javascript(Unable to get GPS

2019-06-25 23:29发布

我很新到Android,Java和JavaScript编码。

我试图让当前的GPS坐标,然后跟踪它在Android设备上。 我使用的WebView和大部分代码是用JavaScript编写的。

我寻觅了很多关于几天,尝试过很多不同的方式,但我无法获得Android设备上的GPS坐标。 请看看代码和HEL PME弄清楚为什么我没有得到的GPS位置。

有几件事情至点是 - 1.我下载并检查其他传感器应用和可以看到被显示的当前GPS坐标(所以GPS已在设备上)。 2.当我运行我的代码,我看到了GPS搜索在通知区域的图标,它不断闪烁,但从来没有修复。 3.当我运行只在笔记本电脑上的浏览器的JavaScript的HTML文件,它要求分享位置的权限,然后给出了坐标,但是相同的文件没有显示在Android的东西。

请看看下面的代码,并帮我想出解决办法。 我已经尝试了很多,我张贴这是我最后的希望。

清单文件具有以下权限 -

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<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" />

在Android的主要的Java代码有 -

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    webView = new WebView(this);  
    webView.getSettings().setJavaScriptEnabled(true);   
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.loadUrl("file:///android_asset/mymap.html");
    setContentView(webView);
}

并使用JavaScript的HTML文件 -

<!DOCTYPE html>
<html>
<body onunload="OnUnload()" onload="getLocation()">
<p id="demo">Your coordinates:</p>
<script>
var watchID;
var x=document.getElementById("demo");
function getLocation()
  {
  if (navigator.geolocation)
    {
       var options = {maximumAge:600000, timeout:100000, enableHighAccuracy: true};
       watchID = navigator.geolocation.watchPosition(showPosition,showError,options);
    }
  else{x.innerHTML="Geolocation is not supported by this browser.";}
  }
function showPosition(position)
  {
  x.innerHTML="Latitude: " + position.coords.latitude + 
  "<br />Longitude: " + position.coords.longitude;  
  }
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;
    }
  }

function OnUnload()
{
   alert ("The current document will be unloaded!");
   navigator.geolocation.clearWatch(watchID);
}  
</script>
</body>
</html>

非常感谢提前,AXS

Answer 1:

嗯,我没有进一步的搜索,并找到了解决办法。 我在这里发布这些链接的答案,我的人谁来到到这里寻找答案的问题。

我在我的Java代码加载网址前加上这些行,然后我能看到的地理坐标。

    webView.getSettings().setGeolocationEnabled(true);
    webView.setWebChromeClient(new WebChromeClient() {
         public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
            // callback.invoke(String origin, boolean allow, boolean remember);              
            callback.invoke(origin, true, false);
         }
        });

欲了解更多信息,请按照下列两个环节 -

  • Android的web视图地理位置
  • 安卓:使用HTML5来确定地理位置在WebView中使用JavaScript API


Answer 2:

在Android 6.0手机(不知道其他版本),这是它杀死了我在我build.gradle文件:

targetSdkVersion: 23

减少到

targetSdkVersion 21

固定我的问题。



文章来源: Unable to get GPS coordinates using Javascript on browser in Android