Hallo,
ich bin noch sehr neu in der App-Programmierung und mache gerade ein Buch darüber durch. Nun bin ich dort schon beim Thema "Widget programmieren". Das Widget an sich läuft wunderbar, nur das Icon aktualisert sich nicht. Es handelt sich um ein Widget, um den Ton beim Telefon stumm/laut zu schalten. Und je nach Zustand soll sich das Icon des Widgets aktualiseren.
Wenn ich den Modus direkt durchs Klicken auf das Widget ändere, wechselt auch das Icon. Nur wenn in die App selbst reingehe und dort den Modus ändere, ändert sich nicht das Icon vom Widget. Als Intervall für die Aktualisierung habe ich 1 Minute angegeben:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="79px" android:minHeight="79px" android:updatePeriodMillis="6000" android:initialLayout="@layout/widget"/>
Und hier noch der Code der Java-Klasse, falls diese benötigt wird:
public class AppWidget extends AppWidgetProvider { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction() == null) { context.startService(new Intent(context, ToggleService.class)); } else { super.onReceive(context, intent); } }
@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { context.startService(new Intent(context, ToggleService.class)); }
public static class ToggleService extends IntentService { public ToggleService() { super(ToggleService.class.getName()); }
@Override protected void onHandleIntent(Intent intent) { ComponentName me = new ComponentName(this, AppWidget.class); AppWidgetManager mgr = AppWidgetManager.getInstance(this); mgr.updateAppWidget(me, buildUpdate(this)); }
private RemoteViews buildUpdate(Context context) { RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget); AudioManager audioManager = (AudioManager)context.getSystemService(Activity.AUDIO_SERVICE);
if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT) { updateViews.setImageViewResource(R.id.phoneState, R.drawable.phone_state_normal); audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); } else { updateViews.setImageViewResource(R.id.phoneState, R.drawable.phone_state_silent); audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); }
Intent i = new Intent(this, AppWidget.class); PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); updateViews.setOnClickPendingIntent(R.id.phoneState, pi);
return updateViews; } }}
Ich hoffe, ihr könnt mir weiterhelfen, da es wirklich nur ein kleines Problem ist (hoffe ich doch mal ).
Liebe Grüße
tööö
Irgendwie ist der Code in der Vorschau an einem Stück, ohne Zeilenumbrüche, wie kann ich das denn lesbarer darstellen?