Update AppWidgetProvider per Intent

  • Antworten:4
  • Bentwortet
Aaron B.
  • Forum-Beiträge: 206

19.07.2013, 16:16:45 via App

Hallo community!

Ich befasse mich schon seit längerem mit den Android-AppWidgets. Nun arbeite ich an einer Musik-App, welche über einen Service Musik abspielt. Dazu sende ich Intents mit Actions wie z.B. de.mymusic.action.PLAY oder ....action.NEXT über startService(Intent i) ab.

Jetzt möchte ich, dass immer, wenn eine der bestimmten Actions versendet werden, mein AppWidgetProvider onReceive() oder onUpdate() starten soll.

Meine Frage:

Kann man bzw. wie kann man einen Intent an meinen AppWidgetReceiver senden? (ich dachte an sowas wie startReceiver(Intent i))

LG

Antworten
Michele
  • Forum-Beiträge: 1.525

19.07.2013, 18:10:33 via Website

Ich verstehe nicht was du wissen möchtest?

Oder wozu?

Zeig doch mal bisschen von deinen Code was und was genau hast du überhaupt vor?

Z.B warum soll er die onUpdate starten usw?



LG

— geändert am 19.07.2013, 18:10:37

Antworten
Aaron B.
  • Forum-Beiträge: 206

19.07.2013, 19:49:30 via App

Das Widget soll immer aktualisiert werden, wenn man einen Intent mit einer von folgenden Aktionen absendet:

1<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
2 <action android:name="de.mymusic.action.PLAY" />
3 <action android:name="de.mymusic.action.CLOSE_NOTIF" />
4 <action android:name="de.mymusic.action.RELEASE" />
5 <action android:name="de.mymusic.action.PAUSE" />
6 <action android:name="de.mymusic.action.RESUME" />
7 <action android:name="de.mymusic.action.TOGGLE" />
8 <action android:name="de.mymusic.action.PREF" />
9 <action android:name="de.mymusic.action.NEXT" />

Deshalb soll in onReceive() oder falls das besser umzusetzen ist in onUpdate() das Widget aktualisiert werden:

1RemoteViews layout = new RemoteViews(c.getPackageName(), R.layout.widget);
2
3 try {
4 SoundItem item = Player.audioItems.get(Player.position);
5
6 layout.setTextViewText(R.id.widget_title, (item.getTitle() == null ? new File(item.getPath()).getName().replace(".mp3", "").replace(".m4a", "") : item.getTitle()));
7 layout.setTextViewText(R.id.widget_artist, (item.getArtist() == null ? "Unbekannt" : item.getArtist()));
8 } catch(Exception e) {
9 layout.setTextViewText(R.id.widget_title, "Keine Wiedergabe");
10 }
11
12 AppWidgetManager.getInstance(c).updateAppWidget(i.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), layout);

In meinem MediaPlayer-Service soll dann folgendes passieren:
1public int onStartCommand(Intent inten, int flags, int startId) {
2 if (inten.getAction().equals(ACTION_PLAY)) {
3//code
4
5//update AppWidget
6startReceiver(ACTION_PLAY);
7}
8}

LG

— geändert am 19.07.2013, 19:49:45

Antworten
Aaron B.
  • Forum-Beiträge: 206

20.07.2013, 08:26:51 via App

Danke aber wie kann ich das ganze außerhalb des AppWidgetProviders nutzen?

LG

Antworten