Appcelerator如何查看定位服务是否开启
How to check if the location service is enabled or not in Appcelerator
能否请您帮我检查一下Appcelerator中是否启用了定位服务。
我正在使用 Titanium SDK 6.1.2 和带有 Marshmellow OS 的三星 S5。即使 GPS 在设备中是 enabled/not,但每次都会导致错误。
提前致谢。
首先,您需要检查 Android 中应用程序的 位置权限 ,然后您需要检查设备中是否启用了位置服务。
两者是不同的说法。
第一个检查应用访问位置的权限,第二个检查位置服务是否打开。
如果不首先在 Android 上检查 位置权限 ,您将无法检查位置 on/off 状态,否则它总是会导致 false状态。
首先在 ios -> plist -> dict
中添加 tiapp.xml
<key>NSLocationAlwaysUsageDescription</key>
<string>Determine Current Location</string>
下面是 Android/iOS 的交叉兼容代码。
function checkLocationEnabledOrNot(_callback, _args) {
if (Titanium.Geolocation.locationServicesEnabled) {
_callback(_args);
} else {
alert("Turn on location on your device.");
}
}
// pass _callback method you want to call after successful access to location
// you can also pass arguments as 2nd parameter to the function you want to call
function startLocationProcess(_callback, _args) {
Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_HIGH;
if (OS_IOS) {
checkLocationEnabledOrNot(_callback, _args);
} else if (OS_ANDROID) {
if (Ti.Geolocation.hasLocationPermissions()) {
checkLocationEnabledOrNot(_callback, _args);
} else {
Ti.Geolocation.requestLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS, function (locationEvent) {
if (locationEvent.success) {
checkLocationEnabledOrNot(_callback, _args);
} else {
alert("Location permissions are required to access locations.");
}
});
}
}
}
现在,在一个按钮上点击你想在位置检查后做的任何事情,你可以简单地这样做:
function anotherFunction(name) {
alert(name);
}
$.someButton.addEventListener('click', function (e) {
startLocationProcess(anotherFunction, "Hello D.Ish");
});
能否请您帮我检查一下Appcelerator中是否启用了定位服务。 我正在使用 Titanium SDK 6.1.2 和带有 Marshmellow OS 的三星 S5。即使 GPS 在设备中是 enabled/not,但每次都会导致错误。 提前致谢。
首先,您需要检查 Android 中应用程序的 位置权限 ,然后您需要检查设备中是否启用了位置服务。
两者是不同的说法。
第一个检查应用访问位置的权限,第二个检查位置服务是否打开。
如果不首先在 Android 上检查 位置权限 ,您将无法检查位置 on/off 状态,否则它总是会导致 false状态。
首先在 ios -> plist -> dict
中添加 tiapp.xml<key>NSLocationAlwaysUsageDescription</key>
<string>Determine Current Location</string>
下面是 Android/iOS 的交叉兼容代码。
function checkLocationEnabledOrNot(_callback, _args) {
if (Titanium.Geolocation.locationServicesEnabled) {
_callback(_args);
} else {
alert("Turn on location on your device.");
}
}
// pass _callback method you want to call after successful access to location
// you can also pass arguments as 2nd parameter to the function you want to call
function startLocationProcess(_callback, _args) {
Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_HIGH;
if (OS_IOS) {
checkLocationEnabledOrNot(_callback, _args);
} else if (OS_ANDROID) {
if (Ti.Geolocation.hasLocationPermissions()) {
checkLocationEnabledOrNot(_callback, _args);
} else {
Ti.Geolocation.requestLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS, function (locationEvent) {
if (locationEvent.success) {
checkLocationEnabledOrNot(_callback, _args);
} else {
alert("Location permissions are required to access locations.");
}
});
}
}
}
现在,在一个按钮上点击你想在位置检查后做的任何事情,你可以简单地这样做:
function anotherFunction(name) {
alert(name);
}
$.someButton.addEventListener('click', function (e) {
startLocationProcess(anotherFunction, "Hello D.Ish");
});