Ho un appwidget davvero semplice (due visualizzazioni di testo e un pulsante). L'ho provato su un Touchpad, Droid 1 e un Droid Razr. Funziona su tutto tranne il Razr. Quando aggiungo il widget alla homescreen non viene visualizzato; è solo invisibile. Se tengo fermo il punto in cui si trova, seleziona un widget e se lo sposto vedo che altri widget si spostano, ma è completamente invisibile.AppWidget Android non visualizzato su alcuni telefoni
Ho inserito alcuni toast nei metodi onReceive
e onEnabled
e lo Toast
visualizza tutte le informazioni corrette (ad esempio azione intent ed extra).
Qualcuno ha qualche esperienza con questo?
EDIT: prega di tenere presente che questo è solo per il debug e non segue le migliori pratiche
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()'? Intendi 'onUpdate()' del tuo 'AppWidgetProvider'? – CommonsWare
puoi anche sovrascrivere il metodo 'onReceive()' in una appwidget ... Penso che lo abbiano lasciato perché le versioni precedenti di Android avevano alcuni problemi con 'onDelete' – Eliezer
Lo capisco. Tuttavia, 'onUpdate()' è in genere dove forniresti 'RemoteViews' per dichiarare cosa dovrebbe andare nel widget dell'app. Viene chiamato 'onUpdate()' e stai fornendo 'RemoteViews' con successo? C'è qualcosa in LogCat che potrebbe riguardare (ad esempio, tracce di stack)? – CommonsWare