【发布时间】:2015-02-25 18:16:02
【问题描述】:
我正在使用 Appcelerator 创建一个移动应用程序,该应用程序使用 Geolocation 根据用户操作在特定时间获取坐标。在 iOS 上它可以完美运行,在 Android 上它可以完美运行,但仅当以设备所有者身份登录时,而不是在受限配置文件下登录时。在受限配置文件下登录时会出现以下两个错误之一:1) 位置当前可用或 2) 无法访问当前位置。我已确保在受限配置文件下启用了位置服务。
这是 AndroidManifest.xml 的使用权限部分:
<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_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
这是我正在使用的地理定位功能:
if (Titanium.Geolocation.locationServicesEnabled == true)
{
if (platform == 'android')
{
Titanium.Geolocation.Android.accuracy = Titanium.Geolocation.ACCURACY_HIGH;
}
else
{
Titanium.Geolocation.accuracy = Titanium.Geolocation.ACCURACY_HIGH;
}
Titanium.Geolocation.locationServicesAuthorization = Titanium.Geolocation.AUTHORIZATION_WHEN_IN_USE;
Titanium.Geolocation.distanceFilter = 5;
Titanium.Geolocation.preferredProvider = Titanium.Geolocation.PROVIDER_GPS;
Titanium.Geolocation.getCurrentPosition(function(e){
clearTimeout(timer2);
setTimeout(function()
{
if (!e.success || e.error)
{
alert('Error: ' + e.error);
//alert('An error occured getting your location. Please close and try again.');
return;
}
currLongitude = e.coords.longitude;
currLatitude = e.coords.latitude;
CheckSave();
}, 2000);
});
}
else
{
alert('Please enable location services.');
}
我在 getCurrentPosition 中使用 setTimer 来给设备足够的时间来获取坐标。同样,我遇到的唯一问题是在以受限配置文件登录的 Android 设备上使用该应用程序。关于这个还能做什么?在此先感谢您对此问题的任何帮助。
【问题讨论】:
-
找到问题并解决。问题:我在所有者配置文件下安装并使用了应用程序测试功能,然后切换到受限配置文件。使用期间存储在所有者配置文件下的数据仍然存在。解决方案:清除 RESTRICTED 配置文件下应用程序上的数据并运行应用程序...问题已解决!希望这对其他人有帮助,因为这困扰了我 3 天。
标签: service geolocation location