Diferentes niveles de permisos de Android
¿Cuál es la diferencia entre pedir permiso usando <uses-permission>
y android: permiso dentro de la aplicación y las etiquetas de actividad?
Cuando sólo uso:
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
La aplicación funciona bien, sin embargo si también uso:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:permission="android.permission.WAKE_LOCK">
o incluso:
<activity android:name=".android.Everlong" android:label="@string/app_name" android:screenOrientation="portrait" android:permission="android.permission.WAKE_LOCK">
La aplicación no se inicia debido a un error de seguridad …
De la documentación :
android: permiso
El nombre de un permiso que los clientes deben tener para iniciar la actividad o de otra manera obtenerla para responder a una intención. Si a una persona que llama de startActivity () o startActivityForResult () no se le ha concedido el permiso especificado, su intención no se entregará a la actividad. Si no se establece este atributo, el permiso establecido por el atributo de permiso del elemento se aplica a la actividad. Si no se establece ningún atributo, la actividad no está protegida por un permiso. Para obtener más información sobre permisos, consulte la sección Permisos en la introducción y otro documento, Seguridad y permisos.
uses-permission – En el momento de la instalación (de su aplicación), el usuario debe aceptar este permiso.
android: permission – Cuando otra aplicación desea llamar a su aplicación, puede especificar qué permiso necesita para solicitar (a la instalación de la otra aplicación) que lo llame.
Básicamente, si otra aplicación desea llamar a SU Activity
través de una Intent
y especifica que necesita un permiso de esta manera, esa Aplicación debe tener acceso a ese permiso. De lo contrario, la Intent
será rechazada por tu aplicación.
<uses-permission>
como mencionaste es una 'solicitud' para usar un 'permiso' particular. Esto alerta a los usuarios que instalan la aplicación que desean obtener acceso a ciertas partes de su dispositivo (como bloqueo de la sesión, acceso a la tarjeta SD, estado del teléfono, etc.). También permite que tu aplicación acceda a otras aplicaciones (y sus componentes) que requieren permisos específicos.
Cuando usas android:permission
en varios componentes de tu aplicación, dicta qué permiso (s) otras aplicaciones de terceros deben tener para poder iniciar los componentes de tu aplicación.
Hice un poco mirando alrededor, y aquí está la documentación para el atributo de permisos dentro de la actividad: http://developer.android.com/reference/android/R.styleable.html#AndroidManifestActivity_permission
Esta página: http://developer.android.com/guide/topics/security/security.html También analiza algunos permisos y seguridad en el manifiesto.