正如标题所说,无论位置是关闭还是成功回拨总是会被触发。有人有什么建议吗?
if (window.cordova) { window.cordova.plugins.diagnostic.isLocationEnabled(locationEnabled,locationDisabled ); } function locationEnabled() {.. } function locationDisabled() {...}
我在三星galaxy s5上用棒棒糖测试
ki0zmccv1#
isLocationEnabled并不像你想象的那样工作。第一个作为参数传递的函数是“success callback”。它并不意味着位置已启用,它只是意味着插件已成功检索到位置状态。参数是一个布尔值,在这里你可以知道位置是否已启用。传递的第二个函数是插件无法获取位置状态时调用的函数。因此,您需要使代码看起来像这样:
isLocationEnabled
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); }); }
有关详细信息,请查看插件文档。
u7up0aaq2#
这是一个老主题,但很高兴知道isLocationEnabled()现在作为Promise工作,因此您必须执行以下操作。
isLocationEnabled()
window.cordova.plugins.diagnostic .isLocationEnabled() .then((locationEnabled) => { if (locationEnabled) { locationEnabled() } else { locationDisabled() } }) .catch((error) => { console.log('The following error occurred: ' + error) })
2条答案
按热度按时间ki0zmccv1#
isLocationEnabled
并不像你想象的那样工作。第一个作为参数传递的函数是“success callback”。它并不意味着位置已启用,它只是意味着插件已成功检索到位置状态。参数是一个布尔值,在这里你可以知道位置是否已启用。
传递的第二个函数是插件无法获取位置状态时调用的函数。
因此,您需要使代码看起来像这样:
有关详细信息,请查看插件文档。
u7up0aaq2#
这是一个老主题,但很高兴知道
isLocationEnabled()
现在作为Promise工作,因此您必须执行以下操作。