Tengo un appwidget realmente simple (dos vistas de texto y un botón). Lo he probado en un Touchpad, Droid 1 y un Droid Razr. Funciona en todo excepto en Razr. Cuando agrego el widget a la pantalla de inicio, no se muestra; es simplemente invisible. Si mantengo presionado el lugar donde debería estar, selecciona un widget y si lo muevo, veo que otros widgets se mueven, pero es completamente invisible.Android AppWidget no se muestra en ciertos teléfonos
Pongo algunas tostadas en los métodos onReceive
y onEnabled
y el Toast
muestra toda la información correcta (es decir, acción de intento y extras).
¿Alguien tiene alguna experiencia con esto?
EDIT: Por favor, tenga en cuenta que esto es sólo para la depuración y no sigue las mejores prácticas
public class GoogleTalkWidget extends AppWidgetProvider {
Button sendMessage;
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Received Intent Action = " +
intent.getAction(), Toast.LENGTH_SHORT).show();
if(intent.getAction().equals(Utils.RECEIVED_MESSAGE_WIDGET)){
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.main_widget);
views.setTextViewText(R.id.widget_message,
(CharSequence)intent.getStringExtra("MESSAGE"));
views.setTextViewText(R.id.widget_sender,
(CharSequence)intent.getStringExtra("SENDER"));
Toast.makeText(context, "Received " +
intent.getStringExtra("MESSAGE") + " FROM " +
intent.getStringExtra("SENDER"), Toast.LENGTH_SHORT).show();
ComponentName cn = new ComponentName(context,
GoogleTalkWidget.class);
AppWidgetManager.getInstance(context).updateAppWidget(cn, views);
}
super.onReceive(context, intent);
}
@Override
public void onEnabled(final Context context){
super.onEnabled(context);
Toast.makeText(context, "Enabled", Toast.LENGTH_SHORT).show();
}
}
'onReceive()'? ¿Quiere decir 'onUpdate()' de su 'AppWidgetProvider'? – CommonsWare
también puede anular el método 'onReceive()' en un appwidget ... Creo que lo dejaron porque las versiones anteriores de Android tenían algunos problemas con 'onDelete' – Eliezer
Entiendo eso. Sin embargo, 'onUpdate()' generalmente es el lugar donde debe suministrar 'RemoteViews' para declarar qué debe ir en el widget de la aplicación. ¿Se llama a 'onUpdate()' y está suministrando con éxito 'RemoteViews'? ¿Hay algo en LogCat que pueda relacionarse (por ejemplo, restos de pila)? – CommonsWare