Если вы не распространяете свое приложение через Маркет и не заботитесь о соблюдении рекомендуемых правил, вам понадобятся теги <uses-permission>
только для любых разрешений, которые использует приложение.Тем не менее, чтобы разрешить нужным устройствам доступ к приложению через Маркет, вам понадобятся теги <uses-permission>
и <uses-feature>
.
<uses-permission>
- это запрос, чтобы дать вашему приложению полномочия принимать определенныевид действия.При подготовке к установке приложения пользователь может просмотреть запрошенные разрешения и решить, следует ли продолжить установку.Если приложение, например, пытается сделать телефонный звонок без объявления разрешения «android.permission.CALL_PHONE», то попытка не удастся.См. здесь для списка разрешений базовой платформы.
<uses-permission>
также используется Маркетом для неявных требований к функциям.Если ваше приложение использует разрешение, которое требует аппаратного обеспечения телефонии, то Маркет предположит, что требуется аппаратное обеспечение телефонии, и приложение не будет доступно для устройства, на котором отсутствует аппаратное обеспечение телефонии.
<uses-feature>
можно использовать для информированияМаркет или что определенная функция требуется или что функция желательна, но не обязательна .Тег переопределит все функции, подразумеваемые <uses-permission>
.Например, если вы укажете <uses-feature android:name="android.hardware.telephony" android:required="false" />
, то телефония не требуется, независимо от того, какие разрешения запрашиваются.
Чтобы увидеть, как <uses-permission>
и <uses-feature>
взаимодействуют для созданияФильтры рынка см. здесь .
Чтобы проверить во время выполнения, доступна ли функция, похоже, что вы можете использовать PackageManager.hasSystemFeature () :
Context context; // Some object, such as Activity, that extends Context
// ...
boolean hasTelephony = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
if (hasTelephony) {
// ...
}
else {
// ...
}