excepción de seguridad al llamar bindAppWidgetId
-
29-09-2019 - |
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
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:
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.