2

То, что я хотел бы выполнить:
Если услуга определения местоположения пользователя мешает мне получать расположение его/ее телефона по умолчанию, я хотел бы попросить разрешения местоположения на каждом API между 16-25 (Android 4.1.2-7.1.1)
Так как на iOS я не встречал эту проблему, я бы хотел сосредоточиться на android.

То, что я уже пробовал:
Ионные андроид спрашивать разрешения местонахождения

  • <uses-permission android:name="android.premission.ACCESS_COARSE_LOCATION" />
  • <uses-permission android:name="android.premission.ACCESS_FINE_LOCATION" />
  • cordova-plugin-android-premissions

Плагин упоминалось выше всегда возвращается с hasPermission: true даже если доступ к местоположению является отклонено на устройстве, чтобы оно не работало для меня.

То, что я еще не пробовал:

Диагностическое описание плагин говорит, что у меня есть выбор между API 23 и выше или API 22 и ниже в моем понимании. (<preference name="android-targetSdkVersion" value="22"/> - это минимальная целевая версия.) Но я не знаю, будет ли он работать на более низких версиях API.

Моя установка:

  • Кордова CLI: 6.2.0
  • Глоток CLI & местные: 3.9.1
  • Ионные Framework: 1.3.1
  • Ионные CLI: 1.7.16
  • Узел: 4.2.2
  • андроид устройств: 5.0.1
  • Желаемая цель сборки: 16
  • Текущая цель сборки: 22

ответ

9

Диагностическое описание плагин говорит, что у меня есть выбор между API 23 и выше или API 22 и ниже Мое понимание. (это минимальная целевая версия.) Однако я не знаю, будет ли она работать на более низких версиях API.

Требования к уровню API-интерфейсов cordova-diagnostic-plugin основаны на версии SDK, используемой для сборки, а не на версии API, запущенной на целевом устройстве. Итак, приложение, созданное с помощью SDK для API 23 (Android 6.0), по-прежнему будет работать на устройствах, работающих под управлением старых версий Android.

Вам необходимо настроить цель сборки на API 23 (или выше) для сборки с основной версией плагина (cordova.plugins.diagnostic в отличие от cordova.plugins.diagnostic.api-22), поскольку он включает в себя код разрешений во время выполнения, который требует среды сборки API 23+.

Если услуга определения местоположения пользователя мешает мне получать расположение его/ее телефона по умолчанию, я хотел бы попросить разрешения местоположения на каждом API 16-25 (Android 4.1.2-7.1.1)

Там два разных аспекта этого:

просят разрешения местоположения на каждом API 16-25 (Android 4.1.2-7.1.1)

Права доступа для Android были введены в API 23 (Android 6.0)

Вы можете проверить, имеет ли приложение авторизацию местоположения, используя isLocationAuthorized(). Вызов его на устройстве под управлением Android 5 (API 22) или ниже всегда будет возвращать TRUE, поскольку разрешения уже предоставлены во время установки.

Вы можете запросить разрешение на использование во время использования с requestLocationAuthorization(). Вызов его на устройстве под управлением Android 5 (API 22) или ниже не будет иметь никакого эффекта, поскольку разрешения уже предоставлены во время установки.

служба расположение мешает мне получить расположение

его/ее телефона Вы можете проверить, если пользователь отключился местоположение с помощью isLocationEnabled().

Если место выключено, вы можете использовать switchToLocationSettings(), чтобы открыть страницу настроек местоположения устройства, чтобы позволить пользователю включить службы определения местоположения, или вы можете использовать cordova-plugin-request-location-accuracy запросить нужную точность определения местоположения без необходимости пользователя вручную делать это на на странице настроек местоположения.

Отказ от ответственности: Я являюсь автором cordova-diagnostic-plugin и cordova-plugin-request-location-accuracy.

+1

Все работает отлично! Большое спасибо @DaveAlden за отличную поддержку и подведение итогов! – MagicDragon

+0

Привет @DaveAlden! Может быть, ты поможешь мне! У меня есть приложение, использующее геолокацию. Все работало нормально до выпуска новой версии. Новая версия содержит явное изменение, которое Google говорит, что мы должны делать (use-feature with hardware.location.gps). А теперь мое приложение не может получить текущую позицию:/ У меня есть те, в моем файле манифеста: ACCESS_LOCATION_EXTRA_COMMANDS ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION android.hardware.location.gps android.hardware.location.network –

+0

Когда я использую ваши диагностики плагин, похоже, все в порядке. Эти методы возвращают истинное или информацию о высокой точности: getLocationAuthorizationStatus isNetworkLocationEnabled isNetworkLocationAvailable isGpsLocationEnabled isGpsLocationAvailable getLocationMode requestLocationAuthorization isLocationEnabled isLocationAuthorized isLocationAvailable Тем не менее, когда я пытаюсь получить позицию результат "позиция отрицает" , Эта проблема на Android 4.3, 4.4, 5.0 и 5.1. Иногда на 6.x тоже. Мое приложение может получить позицию на некоторых устройствах, но на других это не удается. –

Смежные вопросы