Перенаправление на настройки местоположения с использованием кордовы в android

Вот требования, которые я пытаюсь внедрить в моем приложении Android

  1. Когда пользователь входит на домашнюю страницу, проверьте, включен ли gps или нет.

  2. Если не включен, я хочу указать пользователю на включение настроек местоположения.

Первая часть легко создается с помощью плагина GPS-детектора, а вторая часть реализована с использованием плагина web-намерения. Но он не работает, как я ожидал.

if(!gps){ //gps is disabled try to show the location setting using webintent plugin window.plugins.webintent.startActivity( { action: window.plugins.webintent.ACTION_LOCATION_SOURCE_SETTINGS, }, function() {}, function() { alert('Failed to open URL via Android Intent.'); console.log("Failed to open URL via Android Intent. URL: " + theFile.fullPath) } ); } 

Я получаю эту ошибку Failed to open URL via Android Intent .

Вы можете достичь этого, используя плагин cordova-diagnostic-plugin . После установки вы вызываете его через JS примерно так:

 cordova.plugins.diagnostic.switchToLocationSettings(); 

ОБНОВИТЬ

Вы можете использовать точную точность ввода-вывода cordova-plugin для запроса режима высокой точности (например, GPS) непосредственно из приложения. Это отобразит диалоговое окно подтверждения, и если пользователь согласится, GPS будет автоматически активирован, требуя от пользователя вручную изменить настройки:

 function onRequestSuccess(success){ console.log("Successfully requested accuracy: "+success.message); } function onRequestFailure(error){ console.error("Accuracy request failed: error code="+error.code+"; error message="+error.message); if(error.code !== cordova.plugins.locationAccuracy.ERROR_USER_DISAGREED){ if(window.confirm("Failed to automatically set Location Mode to 'High Accuracy'. Would you like to switch to the Location Settings page and do this manually?")){ cordova.plugins.diagnostic.switchToLocationSettings(); } } } cordova.plugins.locationAccuracy.request(onRequestSuccess, onRequestFailure, cordova.plugins.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY);