无法在Android浏览器上使用Javascript获取GPS坐标
我对android、java和javascript编码非常陌生 我正在尝试获取当前的GPS坐标,然后在Android设备上跟踪它。我使用的是webview,大部分代码都是用javascript编写的 几天来我搜索了很多东西,尝试了很多不同的方法,但我无法在android设备上获得GPS坐标。请看一下代码,帮助我找出为什么我没有得到GPS位置 有几点需要指出: 1.我下载并检查了其他传感器应用程序,可以看到当前显示的GPS坐标(因此GPS正在设备上工作)。 2.当我运行我的代码时,我在通知区域中看到GPS搜索图标,它一直闪烁,但从未修复。 3.当我在笔记本电脑浏览器上只运行带有javascript的HTML文件时,它会请求共享位置的权限,然后给出坐标,但是同一个文件在android中没有显示任何内容 请看一下下面的代码,并帮助我解决这个问题。我已经尝试了很多,并将此作为我最后的希望 清单文件具有以下权限-无法在Android浏览器上使用Javascript获取GPS坐标,javascript,android,html,geolocation,gps,Javascript,Android,Html,Geolocation,Gps,我对android、java和javascript编码非常陌生 我正在尝试获取当前的GPS坐标,然后在Android设备上跟踪它。我使用的是webview,大部分代码都是用javascript编写的 几天来我搜索了很多东西,尝试了很多不同的方法,但我无法在android设备上获得GPS坐标。请看一下代码,帮助我找出为什么我没有得到GPS位置 有几点需要指出: 1.我下载并检查了其他传感器应用程序,可以看到当前显示的GPS坐标(因此GPS正在设备上工作)。 2.当我运行我的代码时,我在通知区域中看
<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" />
带有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>
您的坐标:
var-watchID;
var x=document.getElementById(“演示”);
函数getLocation()
{
if(导航器.地理位置)
{
var options={maximumAge:600000,timeout:100000,enableHighAccurance:true};
watchID=navigator.geolocation.watchPosition(showPosition、showError、options);
}
else{x.innerHTML=“此浏览器不支持地理位置。”;}
}
功能显示位置(位置)
{
x、 innerHTML=“纬度:”+position.coords.Latitude+
“
经度:”+position.coords.Longitude;
}
功能错误(错误)
{
开关(错误代码)
{
案例错误。权限被拒绝:
x、 innerHTML=“用户拒绝了地理位置请求。”
打破
案例错误。位置不可用:
x、 innerHTML=“位置信息不可用。”
打破
大小写错误。超时:
x、 innerHTML=“获取用户位置的请求超时。”
打破
案例错误。未知错误:
x、 innerHTML=“发生未知错误。”
打破
}
}
函数OnUnload()
{
警报(“当前文档将被卸载!”);
navigator.geolocation.clearWatch(watchID);
}
提前多谢了,
axs我做了进一步的搜索,找到了一个解决方案。我把这些链接贴在这里,作为我的问题的答案,欢迎来到这里寻找答案的人 在加载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);
}
});
有关更多信息,请访问以下两个链接-
build.gradle文件中为我扼杀了它:
targetSdkVersion: 23
减少到
targetSdkVersion 21
修复了我的问题。当我使用webView.setWebChromeClient(新WebChromeClient(){…
应用程序在我的手机上打开chrome应用程序时…为什么?
targetSdkVersion 21