Nota: En algunos casos, los permisos que solicitas a través de <uses-permission>
pueden influir sobre la forma en que Google Play filtra tu aplicación.
Si solicitas un permiso relacionado con hardware (CAMERA
, por ejemplo), Google Play presupone que tu aplicación requiere la función de hardware subyacente y filtra la aplicación en dispositivos que no la ofrecen.
Para controlar el filtrado, siempre debes declarar de manera explícita las funciones de hardware en los elementos <uses-feature>
en lugar de esperar que Google Play "descubra" los requisitos en los elementos <uses-permission>
. Después, si quieres inhabilitar el filtrado para una función determinada, puedes agregar un atributo android:required="false"
a la declaración <uses-feature>
.
Para obtener una lista de permisos que implican funciones de hardware, consulta la documentación relacionada con el elemento <uses-feature>
.
- sintaxis:
<uses-permission android:name="string" android:maxSdkVersion="integer" />
- se incluye en:
<manifest>
- descripción:
- Especifica un permiso de sistema que debe conceder el usuario para que la aplicación funcione correctamente. El usuario otorga los permisos durante la instalación de la aplicación (en dispositivos con Android 5.1 o versiones anteriores) o durante su ejecución (en dispositivos con Android 6.0 o versiones posteriores).
Para obtener más información sobre los permisos, consulta la sección Permisos en la introducción y la guía de API externa sobre Permisos del sistema. En
android.Manifest.permission
, puedes encontrar una lista de permisos definidos por la plataforma base. - atributos:
android:name
- El nombre del permiso. Puede ser un permiso definido por la aplicación con el elemento
<permission>
, un permiso definido por otra aplicación o uno de los permisos estándar del sistema (como"android.permission.CAMERA"
o"android.permission.READ_CONTACTS"
). Tal como se muestra en estos ejemplos, un nombre de permiso generalmente incluye el nombre del paquete como un prefijo. android:maxSdkVersion
- El nivel de API más alto en el que se debe otorgar este permiso a tu app. Resulta útil establecer este atributo si el permiso que requiere tu app ya no es necesario a partir de un determinado nivel de API.
Por ejemplo, a partir de Android 4.4 (nivel de API 19), ya no es necesario que tu app solicite el permiso
WRITE_EXTERNAL_STORAGE
cuando tu app quiera escribir en sus propios directorios específicos de la aplicación en el almacenamiento externo (los directorios que proporcionagetExternalFilesDir()
). Sin embargo, se requiere el permiso para el nivel de API 18 y versiones anteriores. Por lo tanto, puedes declarar que este permiso es necesario solamente hasta el nivel de API 18 con una declaración como la siguiente:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
De esta forma, a partir del nivel de API 19, el sistema ya no otorgará a tu app el permiso
WRITE_EXTERNAL_STORAGE
.Este atributo se agregó en el nivel de API 19.
- primera inclusión:
- Nivel de API 1
- consulta también: