gpt4 book ai didi

javascript - 无法在 Android 的浏览器上使用 Javascript 获取 GPS 坐标

转载 作者:太空狗 更新时间:2023-10-29 15:02:01 26 4
gpt4 key购买 nike

我对 android、java 和 javascript 编码非常陌生。

我正在尝试获取当前的 GPS 坐标,然后在 Android 设备上对其进行跟踪。我正在使用 webview,大部分代码是用 javascript 编写的。

我已经搜索了几天并尝试了很多不同的方法,但我无法在 Android 设备上获得 GPS 坐标。请查看代码并帮助 pme 弄清楚为什么我没有获得 GPS 位置。

要指出的几件事是 -1. 我下载并检查了其他传感器应用程序,可以看到当前显示的 GPS 坐标(因此 GPS 在设备上工作)。2. 当我运行我的代码时,我在通知区域看到 GPS 搜索图标,它一直闪烁但从未修复。3. 当我在笔记本电脑浏览器上只运行带有 javascript 的 HTML 文件时,它会请求共享位置的权限,然后给出坐标,但是同一个文件在 android 中不显示任何内容。

请查看下面的代码并帮助我解决这个问题。我已经尝试了很多,并将此作为最后的希望发布。

list 文件具有以下权限-

<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>

非常感谢,斧头

最佳答案

好吧,我做了进一步的搜索并找到了解决方案。我将这些链接发布在这里作为我的问题的答案,以供前来这里寻找答案的任何人使用。

我必须在加载 url 之前在我的 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);
}
});

有关更多信息,请点击这两个链接 -

关于javascript - 无法在 Android 的浏览器上使用 Javascript 获取 GPS 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11280946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com