1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Popup mit Result von Background Service

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von The_S, 21.02.2011.

  1. The_S, 21.02.2011 #1
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    10
    Registriert seit:
    07.01.2010
    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
     
  2. rushzero, 21.02.2011 #2
    rushzero

    rushzero Erfahrener Benutzer

    Beiträge:
    171
    Erhaltene Danke:
    36
    Registriert seit:
    20.10.2010
    ä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: 21.02.2011
  3. The_S, 21.02.2011 #3
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    10
    Registriert seit:
    07.01.2010
    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?
     
  4. rushzero, 21.02.2011 #4
    rushzero

    rushzero Erfahrener Benutzer

    Beiträge:
    171
    Erhaltene Danke:
    36
    Registriert seit:
    20.10.2010
    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
     
  5. The_S, 21.02.2011 #5
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    10
    Registriert seit:
    07.01.2010
    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!
     
  6. FelixL, 21.02.2011 #6
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    Ich schlage mal einen weiteren Broadcast vor. Dein Service kann auch notfalls hundert registrieren ;)
     
  7. The_S, 21.02.2011 #7
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    10
    Registriert seit:
    07.01.2010
    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!
     
  8. FelixL, 21.02.2011 #8
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    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.
     
  9. The_S, 21.02.2011 #9
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    10
    Registriert seit:
    07.01.2010
    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!
     
  10. FelixL, 21.02.2011 #10
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    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.
     
    The_S bedankt sich.
  11. The_S, 21.02.2011 #11
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    10
    Registriert seit:
    07.01.2010
    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:
     
  12. FelixL, 21.02.2011 #12
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    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!
     
    The_S bedankt sich.
  13. The_S, 21.02.2011 #13
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    10
    Registriert seit:
    07.01.2010
    Dann hab ich schon mal ne Lektüre für morgen. Danke dir :) .
     
  14. The_S, 22.02.2011 #14
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    10
    Registriert seit:
    07.01.2010
    Hat alles bestens funktioniert :)
     

Diese Seite empfehlen