cordova IsLocationEnabled始终返回真离子

pieyvz9o  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(143)

正如标题所说,无论位置是关闭还是成功回拨总是会被触发。有人有什么建议吗?

if (window.cordova) {
    window.cordova.plugins.diagnostic.isLocationEnabled(locationEnabled,locationDisabled );
}
function locationEnabled() {.. }
function locationDisabled() {...}

我在三星galaxy s5上用棒棒糖测试

ki0zmccv

ki0zmccv1#

isLocationEnabled并不像你想象的那样工作。
第一个作为参数传递的函数是“success callback”。它并不意味着位置已启用,它只是意味着插件已成功检索到位置状态。参数是一个布尔值,在这里你可以知道位置是否已启用。
传递的第二个函数是插件无法获取位置状态时调用的函数。
因此,您需要使代码看起来像这样:

function locationEnabled() {
    // Blabla
}

function locationDisabled() {
    // Blabla
}

if (window.cordova) {
    window.cordova.plugins.diagnostic.isLocationEnabled(function (locationEnabled) {
        if (locationEnabled) {
            locationEnabled();
        } else {
            locationDisabled();
        }
    }, function (error) {
      console.log("The following error occurred: " + error);
    });
}

有关详细信息,请查看插件文档。

u7up0aaq

u7up0aaq2#

这是一个老主题,但很高兴知道isLocationEnabled()现在作为Promise工作,因此您必须执行以下操作。

window.cordova.plugins.diagnostic
      .isLocationEnabled()
      .then((locationEnabled) => {
        if (locationEnabled) {
          locationEnabled()
        } else {
          locationDisabled()
        }
      })
      .catch((error) => {
        console.log('The following error occurred: ' + error)
      })

相关问题