Pregunta

Durante el desarrollo de una aplicación Launcher (pantalla de inicio) para Android, he venido en una excepción de seguridad que no entiendo.

  • Cuando se llama a la [BindAppWidgetId ()] [1] método de dentro de mi actividad Launcher, consigo esta excepción de seguridad:

08-19 11: 30: 11.689: ERROR / Android Runtime (6032): java.lang.SecurityException: bindGagetId appWidgetId = 99 proveedor = ComponentInfo {com.android.music / com.android.music.MediaAppWidgetProvider}: usuario 10034 no tiene android.permission.BIND_APPWIDGET.

La primera vez que pensé que había olvidado el permiso BIND_APPWIDGET en mi manifiesto, pero es definitivamente allí.

La documentación de la API de Android establece lo siguiente:

  

"Es necesario el APPWIDGET_LIST   permiso. Este método es para ser utilizado   por el selector de AppWidget ".

He intentado añadir el permiso android.permission.APPWIDGET_LIST, pero no resuelve el problema.

Además, me he mirado en el manifiesto de la aplicación Configuración de las fuentes de Android que contiene el código AppWidgetPickActivity: hay una línea especial que pide a la cuota de identificación del usuario:

  

"android: sharedUserId =" android.uid.system "

Podría estar relacionado con mi problema?

Si alguien tiene una idea de que sería genial!

Cheers, Laurent

¿Fue útil?

Solución

He encontrado una respuesta!

BindAppWidgetId () es deliberadamente no está disponible para las aplicaciones! (problemas de seguridad).

  

"El android.permission.BIND_APPWIDGET   el permiso es un permiso del sistema.   sólo se puede obtener ese permiso si su   paquete se instala como un sistema   paquete (instalado en / system / app en   lugar de / data / app) o firmar aplicación   con un certificado que es lo mismo que   su imagen androide. Así que, básicamente, este   significa que sólo puede utilizar este permiso   si usted es también el creador de la   androide imagen de la plataforma / teléfono ".

Aquí están los enlaces a esta información:

http: // groups.google.com/group/android-developers/browse_thread/thread/231245ba6d1e690f/047b9d3f776d7e54?lnk=gst&q=bindAppWidgetId#047b9d3f776d7e54

http: // groups.google.com/group/android-developers/browse_thread/thread/f24e0f484a79d529/ef84188e8533a125?lnk=gst&q=bindAppWidgetId#ef84188e8533a125

Otros consejos

Una rápida búsqueda en Google revela que android.permission.APPWIDGET_LIST es un permiso utilizable, aunque no aparece en la lista de los documentos de la API.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top