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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.