La aplicación de Android informa "no instalada" debido a un error de permiso

En una tablet instalé una apk desarrollada en Eclipse bajo Ubuntu. La aplicación funciona en el AVD y ya está instalada en un teléfono y funcionando. La instalación de la apk no da error, sin embargo al iniciar la App da un mensaje de brindis "no instalado".

En la salida de aLogCat veo un mensaje de denegación de permiso del lanzador para WRITE_EXTERNAL_STORAGE. Tenga en cuenta que la conexión USB no está conectada cuando inicié la aplicación.

Además, noté la siguiente línea en aLogCat y noté que se agregó "-1" al nombre del paquete.

   New package installed in /data/app/com.company.AppName-1.apk 

En el manifiesto las líneas

   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />

están en el bloque manifiesto y

   <android:permission="android.permission.WRITE_EXTERNAL_STORAGE">

en el bloque de la aplicación.

¿Por qué funciona esto en un teléfono con Android 2.3 y en un AVD con Android 4.0.3, pero no en una tableta con Android 4.0.3?

Información de la plataforma: Eclipse 3.7.2, Tablet: Yarvik TAB461EUK; Instalado con "ES File Explorer"

preguntado el 27 de julio de 12 a las 22:07

2 Respuestas

Intente eliminar el permiso del bloque de aplicaciones. No lo sé con certeza, pero por experiencia personal, ICS no admite el atributo de permiso en el bloque de la aplicación que ya se ha definido en el bloque principal. Hereda del bloque principal. Por favor diga si eso resuelve el problema.

No sé por qué funciona en AVD, puede ser porque AVD no tiene almacenamiento externo.

Respondido 28 Jul 12, 20:07

Perfecto, ahora funciona en la 2.3 y 4.0.3 AVD y en la 4.0.3 TAB. No se puede probar en el teléfono en este momento. - user1558724

Gracias, pero ¿podría dar un enlace a la documentación? - usuario1521536

Me alegra saber que funcionó. @Lai Vung. A mi me paso el mismo error y por eso lo se. No conozco ninguna documentación que lo respalde y gracias por señalarlo. He editado mi respuesta. :) - Oasa

Documentación relacionada:

http://developer.android.com/guide/topics/manifest/manifest-intro.html describe el elemento de permiso solo para el bloque de manifiesto principal (ahora)

Cambios por versión establece lo siguiente:

HONEYCOMB: cuando una aplicación requiere un permiso para acceder a uno de sus componentes (actividad, receptor, servicio, proveedor), este permiso ya no se aplica cuando la aplicación quiere acceder a su propio componente. Esto significa que puede requerir un permiso en un componente que no posee y aun así acceder a ese componente.

Actividad establece lo siguiente:

El nombre de un permiso que los clientes deben tener para iniciar la actividad o conseguir que responda a una intención. Si a una persona que llama de startActivity() o startActivityForResult() no se le ha otorgado 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.

no me queda muy claro

Respondido el 20 de junio de 20 a las 10:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.