Я разрабатываю простое приложение, используя плагин Flutter location
, с некоторым кодом, основанным на своем примере кода. :
var location = new Location();
try {
_currentLocation = await location.getLocation();
} on PlatformException catch (e) {
if (e.code == 'PERMISSION_DENIED') {
_locationMsg = 'Permission denied';
}
_currentLocation = null;
}
Как указано на странице плагина, я добавил ACCESS_FINE_LOCATION
в манифест Android.
Проблема в том, что когда я тестирую приложение на телефоне (с Android 9, если это актуально), даже если определение местоположения включено и у меня есть сигнал GPS, выполнение приведенного выше кода приводит к следующему быстрый:
Подсказка гласит: "Для удобства работы включите определение местоположения устройства, которое использует службу определения местоположения Google". с двумя кнопками: "НЕТ, СПАСИБО" и " ОК".
Это ужасно неудобно для пользователя: местоположение уже поступает из GPS, нет необходимости дополнительно беспокоить пользователя.
Откуда возникает проблема и как я могу избежать этого запроса? Я предпочитаю сообщать о «неизвестном местоположении», чем отображать подсказку.
Изменить: обратите внимание, что приглашение не связано с уведомлением пользователя о том, что местоположение будет использоваться, а является функцией Google, нарушающей конфиденциальность, которая при нажатии кнопки "ОК" включает точность определения местоположения Google, как описано ниже (скрыто глубоко в меню настроек):
На приведенном выше изображении указано: "Повысить точность определения местоположения" с кнопкой-переключателем. Точность определения местоположения Google. Служба определения местоположения Google повышает точность определения местоположения за счет использования сетей Wi‑Fi и мобильных сетей, помогающих определить ваше местоположение. Анонимные данные о местоположении будут отправляться в Google, когда ваше устройство включено.
Нажатие на первое приглашение включает это, что пользователь должен отключить вручную, если он не хочет отправлять данные о своем местоположении в Google. Отключение его и повторная попытка получить местоположение приводит к тому же запросу, поэтому он определенно не связан с предупреждением пользователя об использовании данных о местоположении. Кроме того, если Google Location Accuracy включен перед использованием приложения, подсказка никогда не появляется, вероятно, поэтому большинство разработчиков никогда ее не замечают.
Я знаю, что можно получить данные о местоположении без включения Google Location Accuracy, поскольку большинство приложений делают это. Но я не знаю, откуда приходит подсказка: это плагин местоположения Flutter? Тот факт, что я использую Android 9 SDK? Или пример кода?