Ich habe eine wirklich einfache Appwidget (zwei Textansichten und eine Schaltfläche). Ich habe es auf einem Touchpad, Droid 1 und einem Droid Razr getestet. Es funktioniert auf alles außer dem Razr. Wenn ich das Widget zum Startbildschirm hinzufüge, wird es nicht angezeigt. es ist nur unsichtbar. Wenn ich an der Stelle halte, wo es sein würde, wählt es ein Widget aus und wenn ich es umherbewege, sehe ich, dass andere Widgets aus dem Weg gehen, aber es ist komplett unsichtbar.Android AppWidget nicht auf bestimmten Handys
Ich habe einige Toasts in die onReceive
und onEnabled
Methoden und die Toast
zeigt alle richtigen Informationen (dh Absicht Aktion und Extras).
Hat jemand irgendwelche Erfahrungen damit?
EDIT: Bitte beachten Sie dies nur für das Debuggen und folgt nicht Best Practices
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()'? Meinst du "onUpdate()" von deinem "AppWidgetProvider"? – CommonsWare
Sie können auch die 'onReceive()' Methode in einem Appwidget überschreiben ... Ich denke, sie haben es in, weil frühere Versionen von Android hatte einige Probleme mit 'onDelete' – Eliezer
Ich verstehe das. 'OnUpdate()' ist jedoch normalerweise der Ort, an dem Sie die 'RemoteViews' bereitstellen, um zu deklarieren, was in das App-Widget gehen soll. Wird 'onUpdate()' aufgerufen und liefern Sie erfolgreich die 'RemoteViews'? Gibt es irgendetwas in LogCat, das sich darauf beziehen könnte (z. B. Stapelspuren)? – CommonsWare