<uses-permission>

Nota: En algunos casos, los permisos que solicitas a través de <uses-permission> pueden afectar la forma en que Google Play filtra tu aplicación. Si solicitas un permiso relacionado con hardware, como CAMERA, Google Play asume 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 el usuario debe otorgar para que la app funcione correctamente. El usuario otorga permisos cuando se instala la aplicación, en dispositivos con Android 5.1 o versiones anteriores, o mientras se ejecuta la app, 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 descripción general del manifiesto de la app y la guía Permisos en Android. En android.Manifest.permission, se encuentra una lista de permisos definidos por la plataforma base.

atributos:
android:name
Es 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 de sistema estándares (como "android.permission.CAMERA" o "android.permission.READ_CONTACTS"). Como se muestra en estos ejemplos, en el nombre de un permiso generalmente se incluye el nombre del paquete como prefijo.
android:maxSdkVersion
Es 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 para escribir en sus propios directorios específicos de la aplicación en el almacenamiento externo, que proporcionagetExternalFilesDir().

Sin embargo, el permiso es necesario hasta el nivel de API 18. 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 manera, a partir del nivel de API 19, el sistema ya no otorga a tu app el permiso WRITE_EXTERNAL_STORAGE.

Se agregó en el nivel de API 19.

primera inclusión:
Nivel de API 1
consulta también: