Мое приложение для Android использует WebView, который иногда запрашивает местоположение, необходимо ли добавлять в манифест?

#android #android-manifest

#Android #android-манифест

Вопрос:

В манифесте у меня есть:

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  

Я использую WebView в своем приложении для Android для отображения некоторых веб-сайтов, которые могут запрашивать местоположение. 4 из 100 веб-сайтов иногда запрашивают местоположение. Таким образом, это означает, что если местоположение не указано, приложение также будет работать, оно загрузит другие 96 веб-сайтов. Итак, есть ли необходимость добавлять следующий тег в манифест, поскольку я использую разрешение на местоположение?

 <uses-feature
    android:name="android.hardware.location"
    android:required="true" />
  

Я задаю этот вопрос, потому что на странице документации есть одно примечание, в котором говорится:

Внимание: если ваше приложение предназначено для Android 5.0 (уровень API 21) или выше и использует разрешение ACCESS_COARSE_LOCATION или ACCESS_FINE_LOCATION для получения обновлений местоположения из сети или GPS, соответственно, вы также должны явно указать, что ваше приложение использует android.hardware.location .сетевые или аппаратные средства android.hardware.location.gps.

Обратите внимание, что я ориентируюсь на уровень api 30, поэтому я использую android.hardware.location

Теперь мой вопрос: поскольку 96 веб-сайтов будут работать в WebView без местоположения, могу ли я установить android:required=»false» в теге?

Комментарии:

1. Это зависит от ваших требований. True вы указываете, что приложение не может функционировать или не предназначено для работы, когда указанная функция отсутствует на устройстве. И False это означает, что приложение предпочитает использовать функцию, если она присутствует на устройстве, но при необходимости она предназначена для работы без указанной функции. Если вы согласны с отображением 96 веб-сайтов, то это может быть false, НО если вам нужно отобразить все 100 веб-сайтов, тогда для него должно быть установлено значение True

2. Итак, если я установлю required=»false» в <uses-feature>, тогда приложение будет доступно для всех пользователей? И 100 веб-сайтов будут работать правильно, если доступны компоненты location HW, в противном случае 96 веб-сайтов будут работать правильно (я имею в виду, что они будут функционировать по назначению). Я прав?

3. Короче говоря, да. Если функция явно объявлена как не требуемая, Google Play не добавляет эту функцию в список необходимых функций. По этой причине явно объявленная необязательная функция никогда не учитывается при фильтрации приложения. Даже если устройство не предоставляет заявленную функцию, Google Play все равно будет считать приложение совместимым с устройством и покажет его пользователю, если не применяются другие правила фильтрации. Также обратите внимание, что значение по умолчанию для Android: требуется, если не объявлено, равно «true».

4.Первый вопрос — да. Еще раз, если требуется = false, приложение не будет фильтроваться в PlayStore для устройств, у которых нет соответствующей функции. Второй вопрос — зависит от того, что вам нужно. Местоположение — приложение использует одну или несколько функций на устройстве для определения местоположения, таких как местоположение GPS, сетевое местоположение или местоположение ячейки. И location.gps — приложение использует точные координаты местоположения, полученные от приемника глобальной системы позиционирования (GPS) на устройстве

5. Исходя из этого разговора, я не думаю, что вам даже нужна <uses-feature> . Основная цель этого (на мой взгляд) — создать фильтр для устройств, которые не соответствуют требованиям вашего приложения. Если вы устанавливаете для требуемого поля значение false , вы также можете удалить его (если у вас нет других причин). Если вы просто хотите получить местоположение устройства, <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> этого должно быть достаточно?