如何检查Appcelerator中是否启用了位置服务

时间:2017-08-25 09:55:18

标签: android gps appcelerator

是否可以帮我检查Appcelerator中是否启用了位置服务。 我正在使用Titanium SDk 6.1.2和三星S5与Marshmellow OS。即使GPS在设备中启用/不启用,但每次都会导致错误。 在此先感谢。

1 个答案:

答案 0 :(得分:1)

首先,您需要检查Android和Android中应用的位置权限。那么您需要检查设备中是否启用了位置服务。

两者都是不同的陈述。

首先检查应用访问位置的权限&第二是关于检查位置服务是打开还是关闭。

首先在Android上检查位置权限,您无法检查位置开/关状态,否则它将始终导致错误状态。

首先在ios中的tiapp.xml中添加它 - > plist - >字典

<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");
});