Разрешения, влияющие на требования к функциям
Некоторые константы аппаратных и программных функций стали доступны для приложений
после соответствующего API; например, функция android.hardware.bluetooth была добавлена
в Android 2.2 (уровень API 8), но API Bluetooth, на который она ссылается,
был добавлен в Android 2.0 (уровень API 5).
Из-за этого некоторые приложения могли использовать API до того, как у них появилась
возможность объявить, что им требуется API с помощью системы <uses-feature>.
Чтобы предотвратить непреднамеренный доступ к этим приложениям, Google Play предполагает,
что определенные аппаратные разрешения указывают на то, что базовые аппаратные функции
требуются по умолчанию.
Например, приложения, использующие Bluetooth, должны запрашивать для устаревших приложений
разрешение BLUETOOTH в элементе <uses-permission>/.
Google Play предполагает, что объявление разрешения означает, что базовая функция
android.hardware.bluetooth требуется приложению, поэтому настраивает фильтрацию
на основе этой функции.
Обратите внимание, что объявления <uses-feature>, включая любой
объявленный атрибут android:required, всегда имеют приоритет над функциями ,
которые подразумеваются разрешениями, перечисленными в этой таблице.
Для любого из этих разрешений можно отключить фильтрацию на основе подразумеваемой
функции (implied feature), явно объявив функцию в элементе <uses-feature>
с атрибутом required, установленным на false.
Например, чтобы отключить фильтрацию на основе разрешения CAMERA, достаточно добавить
в файл манифеста следующие объявления <uses-feature>:
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
Если приложение предназначено для Android 5.0 (уровень API 21)
или выше и использует разрешение ACCESS_COARSE_LOCATION или ACCESS_FINE_LOCATION
для получения обновлений местоположения из сети или GPS соответственно, то
должно быть явно указано, что приложение использует аппаратные функции
android.hardware.location.network или android.hardware.location.gps
В таблице ниже перечислены разрешения, которые определяют требования к функциям,
эквивалентные объявленным в элементах <uses-feature>. Строки таблицы
содержат пары разрешение-функция (функции).
Например, BLUETOOTH - android.hardware.bluetooth здесь:
BLUETOOTH - это разрешение
android.hardware.bluetooth - это одразумеваемые требования к функциям
Bluetooth
BLUETOOTH - android.hardware.bluetooth
BLUETOOTH_ADMIN - android.hardware.bluetooth
Камера
CAMERA - android.hardware.camera, android.hardware.camera.autofocus
Местонахождение
ACCESS_MOCK_LOCATION - android.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDS - android.hardware.location
INSTALL_LOCATION_PROVIDER - android.hardware.location
ACCESS_COARSE_LOCATION - android.hardware.location , android.hardware.location.network
ACCESS_FINE_LOCATION - android.hardware.location, android.hardware.location.gps
Микрофон
RECORD_AUDIO - android.hardware.microphone
Телефония
CALL_PHONE - android.hardware.telephony
CALL_PRIVILEGED - android.hardware.telephony
MODIFY_PHONE_STATE - android.hardware.telephony
PROCESS_OUTGOING_CALLS - android.hardware.telephony
READ_SMS - android.hardware.telephony
RECEIVE_SMS - android.hardware.telephony
RECEIVE_MMS - android.hardware.telephony
RECEIVE_WAP_PUSH - android.hardware.telephony
SEND_SMS - android.hardware.telephony
WRITE_APN_SETTINGS - android.hardware.telephony
WRITE_SMS - android.hardware.telephony
Wi-Fi
ACCESS_WIFI_STATE - android.hardware.wifi
CHANGE_WIFI_STATE - android.hardware.wifi
CHANGE_WIFI_MULTICAST_STATE - android.hardware.wifi