OnClick PendingIntent en widget a veces no funciona
Tengo un widget y 4 botones en él. Los botones son realmente accesos directos a otras aplicaciones. He definido una intención pendiente onClick para cada uno de los botones con este código:
Intent i = context.getPackageManager().getLaunchIntentForPackage(s); PendingIntent pi = PendingIntent.getActivity(context, 0, i, Intent.FLAG_ACTIVITY_NEW_TASK); remoteViews.setOnClickPendingIntent(curIconId, pi);
Por lo general, funciona bien, pero a veces no hace nada y en el logcat veo una SendIntentException con el mensaje "No se puede enviar intención pendiente".
- Android 4.0: widgets no aparecen?
- Widget y aplicación en un apk
- Android AnalogClock: configuración de programación por programación
- Cómo quitar el relleno ImageButton de forma programática?
- Implementar ListView en los widgets Android
Si actualizo el widget (es decir, estableciendo la intención pendiente de nuevo), funciona bien de nuevo.
¿Alguna idea de por qué se rompe a veces?
Gracias
- Android - widget de acordeón
- Buscar ID de widget de la pantalla de inicio
- Creación de un widget de reloj digital con una fuente personalizada
- Widget de Android diferente orientación vertical y horizontal
- OnUpdate NUNCA llamado - Android Widget
- Actualizar sólo el ID de widget Android actual en el método de actualización.
- Widget se vuelve invisible después de reinstalar
- Listivew Widget no se actualiza automáticamente
Parece que siempre que envíe RemoteViews a un widget, necesita especificar completamente el widget. Si solo especificas parcialmente el widget, si algo hace que tu widget se actualice (como una rotación de pantalla), tu widget solo se recreará con las RemoteViews más recientes.
Aquí está el enlace que me señaló esto a mí http://www.androiddiscuss.com/1-android-discuss/95040.html
Me temo que no puedo contestarle – Tengo el mismo comportamiento en el teléfono de un compañero de trabajo (Motorola), pero no en otros teléfonos.
Puedo señalar, sin embargo, que su PendingIntent.getActivity()
flags
parámetro es incorrecto: que Intent.FLAG_ACTIVITY_NEW_TASK
tiene que ir a Intent i
. La llamada getActivity()
uno de FLAG_ONE_SHOT
, FLAG_NO_CREATE
, FLAG_CANCEL_CURRENT
, FLAG_UPDATE_CURRENT
o uno de los indicadores Intent.FILL_IN_
.
También puedo mencionar que mis clics fallaron a veces hasta que utilicé PendingIntent.FLAG_CANCEL_CURRENT
. Esto podría ser la razón por la cual la adición de "datos únicos" ayuda.
El problema era que envié demasiados datos a las vistas remotas (en mi caso, demasiados iconos). Así que la actualización realmente falló. Hay un límite de tamaño en lo que puede enviar, no recuerdo dónde lo leí.
La solución en mi caso era actualizar las imágenes con URL de recursos en lugar de las imágenes reales.
Tuve el mismo problema: el widget no funcionó después de la rotación. El problema en mi widget fue que he sobrepasado el método onReceive y allí tocó la vista para incrementar un valor de texto. He resuelto el problema de duplicar el setOnClickPendingIntent estaba en onUpdate, en el onReceive bien.
- ¿Existe la intención de lanzar Android Market a la página "Mis aplicaciones"?
- Resoluciones de la imagen de fondo de Android