Popup mit Result von Background Service

T

The_S

Fortgeschrittenes Mitglied
10
Hallo,

ich registriere über den AlarmManager einen BroadcastReceiver. Dieser BroadcastReceiver startet einen Hintergrund Service, der eine gewisse Zeit läuft. Nun soll der Hintergrund Service ein Popup anzeigen, das dem Benutzer die Möglichkeit gibt auf "ja" oder "nein" zu klicken. Sobald der User geklickt hat, möchte ich in meinem Hintergrund Service wissen, auf was geklickt wurde.

Wie kann ich so etwas realisieren?

Danke und Grüße
Stefan
 
ähm wo ist jetzt genau dein Problem das was du beschrieben hast funktioniert soweit(vom logischen her)

Broadcast() -> onReceiv() -> StartService() -> AlertActivity.Show()

Erklär mal genauer wo du jetzt nicht weiterkommst
 
Zuletzt bearbeitet:
Das Problem ist, wie ich den Dialog anzeige.

Das hier

Code:
	public static void showInfoDialog(Context c, String text) {
		AlertDialog.Builder builder = new AlertDialog.Builder(c);
		builder
			.setMessage(text)
			.setCancelable(true)
			.setPositiveButton(R.string.gen_ok, new DialogInterface.OnClickListener() {
			
				@Override
				public void onClick(DialogInterface dialog, int which) {
					dialog.cancel();
				}
		});
		AlertDialog alert = builder.create();
		alert.show();
	}

Funktioniert aus dem Service nicht, wenn ich als Context getApplicationContext() im Service übergebe. Also es wird einfach nichts angezeigt.

Mach ich was falsch?
 
Das Funktioniert aus dem Service auch nicht ein Service sollte die Notificationbar benutzen um dem User Information mitzuteilen.

Könntest höchstens ein Activity starten und den Dialog dort implementieren
 
Und wie komme ich dann an den Rückgabewert der Activity? startActivityForResult kann ich aus einem Service ja nicht starten ...

Ich programmiere an einer Alarm-App - und da sollte der User ja irgendwie die Möglichkeit haben den Alarm über eine Schaltfläche auszuschalten ;) .

Danke!
 
Ich schlage mal einen weiteren Broadcast vor. Dein Service kann auch notfalls hundert registrieren ;)
 
Also bspw. Broadcast ruft Activity, Activity spielt Alarm, sobald Benutzer auf den Snooze-Button drück wird ein weiterer Broadcast registriert, der bspw. in 5 Minuten die Activity noch einmal aufruft. Usw. usf. ...

Hast du das so gemeint?

Danke!
 
Ungefähr. Gibt aber wahrscheinlich sauberere Lösungen.

Z.B. kannst du aus dem Service heraus eine normale Activity problemlos starten:

Intent dialogIntent = new Intent(getBaseContext(), myActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(dialogIntent);

Du kannst wahrscheinlich auch aus der Activity heraus den AlarmManager wieder manipulieren. Musst schauen was für dich das Sinnvollste ist.
 
Ja, aber wenn ich aus dem Service raus die Activity starte, bekomme ich im Service wieder nicht mit, wenn der Benutzer einen Knopf an der Activity gedrückt hat. Oder hast du das anders gemeint?

Dankeschön!
 
Naja, egal wie du die Activity startest sollte es über den Broadcast möglich sein dem Service das Ergebnis mitzuteilen. Oder eben den AlarmManager so manipulieren, das er dem Service dann sowieso einen Broadcast schickt, darauf horchst du ja sowieso.
 
  • Danke
Reaktionen: The_S
Hui, ich glaube da muss ich mich dann noch einmal tiefer in die Broadcast-Service Thematik reinfuchsen. Dachte bis jetzt gibt es die Aufteilung:

Activity: GUI-Element
BroadcastReceiver: Reagiert auf ein Systemereignis, bspw. eine bestimmte Uhrzeit, Screen an/aus, Handy fährt hoch, ...
Service: Hintergrundprozess

Aber wenn ich über einen Broadcast auch eine Activity mit einem Service kommunizieren lassen kann, wäre das natürlich super. Danke soweit schon einmal. Wenn du noch nen Link oder so für mich hättest, wäre ich wunschlos glücklich :thumbsup:
 
Context | Android Developers)

Du kannst auch selbst Broadcasts senden und definieren. Das System hat nur eigene, die auch teilweise nur vom System gesendet werden können!
 
  • Danke
Reaktionen: The_S
Dann hab ich schon mal ne Lektüre für morgen. Danke dir :) .
 
Hat alles bestens funktioniert :)
 

Ähnliche Themen

S
Antworten
17
Aufrufe
552
jogimuc
J
B
Antworten
4
Aufrufe
472
bb321
B
5
Antworten
22
Aufrufe
1.418
590239
5
Zurück
Oben Unten