Jetzt registrieren » Login
« Login

Passwort vergessen?

Du bist hier: Android Forum » Android Developer Forum » Android Entwickler Forum » BroadcastReceiver soll Activity starten
Gehe zu: Neue Beiträge | Eigene Threads | Beobachtete Threads

BroadcastReceiver soll Activity starten

Um aktiv im Android Forum teilnehmen zu können, musst Du Dich bei AndroidPIT registriert haben.

User-Foto
Christoph R.de

Rang: Android Prof

Beiträge: 602

Eintrittsdatum: 21.10.2009

BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 14:47:01
Ich spiele wieder mal ein bischen mit der Android-Programmierung herum, und will dabei eingehende SMS verarbeiten. Dazu soll ein BroadcastReceiver eine neue Activity starten, und dieser das Bundle mitübergeben, damit die gestartete Activity die SMS-Daten auswerten kann.

1public class SMSReceiver extends BroadcastReceiver {
2 private static final String ACTION_SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
3
4 @Override
5 public void onReceive(Context context, Intent intent){
6 if(intent.getAction().equals(ACTION_SMS_RECEIVED)){
7 Intent activityIntent = new Intent();
8 activityIntent.setClassName("net.krisdoff.SMSReceiver", "SMSPopUpActivity");
9 activityIntent.putExtras(intent.getExtras());
10 activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
11 context.startActivity(activityIntent);
12 }
13 }
14}

Das einzige was dabei rauskommt ist allerdings ein "unerwartet beendet". Die SMSPopUpActivity ist bisher nur ein leerer Bildschirm und tut garnichts. Irgendwo im Intent muss also was liegen - kann mir jemand auf die Sprünge helfen?
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Mac Systemsde

Rang: Android SilverSenior

Beiträge: 966

Eintrittsdatum: 21.06.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 15:04:27
Ich finde es immer unschön mit Strings zu arbeiten wenn man stattdessen Konstanten nutzen kann, beim refactoren hat man auch keine sorgen damit!

Daher folgende Idee:

1intent.setClass(context,SMSPopUpActivity.class);




hth,
Mac

-----
Kite-fast.de - Chillen - PKRA 2010 Java MP3 Player - Wind Mate APP

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Christoph R.de

Rang: Android Prof

Beiträge: 602

Eintrittsdatum: 21.10.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 16:06:01
Ich war mir sicher, dass ich das auch probiert hatte. Aber das tut's. :)

Intent weitergeben und in der Activity auswerten klappt auch, alles wie geplant. Danke :)
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Christoph R.de

Rang: Android Prof

Beiträge: 602

Eintrittsdatum: 21.10.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 17:15:02
Na immerhin, wird doch :)

Antworten mit Zitat Antworten Link +1     (1 Stimme)
User-Foto
Jörg V.de

Status: Administrator

Rang: Android Gottheit

Beiträge: 4.914

Eintrittsdatum: 08.06.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 18:14:10
Na bitte, wird doch.

Ich nehme an, dass Du den Receiver in einem Hintergrund Service laufen hast oder?

-----
lg Voss - Ach ja und noch was, unsere AndroidPIT-Regeln ლ(╹◡╹ლ)

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Christoph R.de

Rang: Android Prof

Beiträge: 602

Eintrittsdatum: 21.10.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 18:28:23
Jörg V.
Na bitte, wird doch.

Ich nehme an, dass Du den Receiver in einem Hintergrund Service laufen hast oder?
Nein. Wäre das die elegantere Lösung bzw. wo wären die Vorteile? Wolte eigentlich einen eigenen Service vermeiden, und soweit wie möglich auf System-Mittel zurückgreifen, daher rennt momentan der Code, wie er oben angegeben ist.

Momentan muss ich erstmal herausfinden, ob nicht ein Dialog klüger wäre als eine Activity. Das Activity-Dialog-Theme ist nicht so das Wahre, die Dialoge bieten da schon eher das, was ich suche (AlertDialog)...
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Jörg V.de

Status: Administrator

Rang: Android Gottheit

Beiträge: 4.914

Eintrittsdatum: 08.06.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 18:54:50
Wird dann Deine Activity nicht irgendwann "inresponsive" wenn sie nicht als Hintergrund-Service läuft?

Wie hast Du das denn gelöst? Im Normalfall geht die Activity ja, wenn sie nicht mehr visible ist in den onPause und weiter in den onStop Handler, womit sie sofort ein Kandidat für den Process Kill wird.

-----
lg Voss - Ach ja und noch was, unsere AndroidPIT-Regeln ლ(╹◡╹ლ)

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Jack-In-Da-Boxde

Status: Administrator

Rang: Android GoldSenior

Beiträge: 1.400

Eintrittsdatum: 22.09.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 19:27:53 — geändert am 15.05.2010 19:28:35
eigentlich sollte das ohne service perfekt funzen...

da im manifest der receiver via "action" definiert wird, wird android (bei einer
eingegangenen sms) eine auswahlbox anzeigen, in der man die verarbeitende
app angeben kann.

darin sollte (neben der standart-sms-app) auch die eigene app auftauchen.

-----
AndroidPIT-Regeln || AndroidPIT-FanShop || AndroidPIT-UserMap

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Christoph R.de

Rang: Android Prof

Beiträge: 602

Eintrittsdatum: 21.10.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 19:29:01
Jörg V.
Wird dann Deine Activity nicht irgendwann "inresponsive" wenn sie nicht als Hintergrund-Service läuft?

Wie hast Du das denn gelöst? Im Normalfall geht die Activity ja, wenn sie nicht mehr visible ist in den onPause und weiter in den onStop Handler, womit sie sofort ein Kandidat für den Process Kill wird.
Die Activity ist ja garnicht der eigentliche Teil der App. Der Receiver ist quasi Haupt-"Activity", der im System registriert wird. Wird ein Broadcast geschmissen, wird er angesprochen, und löst die Activity aus.
(Daher auch kein Icon im Menü, kein Öffnen der App beim Installieren)

So ist zumindest mein Verständnis von der Sache :)
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Jack-In-Da-Boxde

Status: Administrator

Rang: Android GoldSenior

Beiträge: 1.400

Eintrittsdatum: 22.09.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 19:31:16
Christoph R.
So ist zumindest mein Verständnis von der Sache :)

damit liegst du auch richtig :bashful:

-----
AndroidPIT-Regeln || AndroidPIT-FanShop || AndroidPIT-UserMap

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Jörg V.de

Status: Administrator

Rang: Android Gottheit

Beiträge: 4.914

Eintrittsdatum: 08.06.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 19:42:14
Nee klar ... :)

Die Info hatte mir gefehlt .. mit dem registrieren des Receivers im Manifest..

Dann ist alles klar und es braucht natürlich keinen Hintergrundservice.

Habt Ihr zufällig Erfahrungswerte wie sich das mit dieser Methode bei zeitkritischen Aktionen verhält wenn die App quasi erst geladen werden muss?

-----
lg Voss - Ach ja und noch was, unsere AndroidPIT-Regeln ლ(╹◡╹ლ)

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Jack-In-Da-Boxde

Status: Administrator

Rang: Android GoldSenior

Beiträge: 1.400

Eintrittsdatum: 22.09.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 19:44:48
Jörg V.
Habt Ihr zufällig Erfahrungswerte wie sich das mit dieser Methode bei zeitkritischen Aktionen verhält wenn die App quasi erst geladen werden muss?

definiere zeitkritische aktionen...

die sms wird in jedem fall im system gespeichert... dann wird die entsprechende app (in aller ruhe) geladen...

-----
AndroidPIT-Regeln || AndroidPIT-FanShop || AndroidPIT-UserMap

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Christoph R.de

Rang: Android Prof

Beiträge: 602

Eintrittsdatum: 21.10.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 19:51:16
In welchem Fall müsste die App denn unmittelbar "da" sein? Selbst eine Verzögerung von 1 Sek. ist beim Empfang von SMS ja nicht tragisch. Oder hast du einen anderen Fall im Auge?

Wenn ich dich richtig verstehe, hattest du einen Receiver im Hinterkopf, der während dem Laufen der App auf Intens achtet, richtig? z.B. Registrieren eines Anrufs, der die App unterbrechen würde? (Nur damit ich ein Verständnis davon bekomme, welche Fälle es noch alles gibt - bin schließlich Anfänger :))
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Jörg V.de

Status: Administrator

Rang: Android Gottheit

Beiträge: 4.914

Eintrittsdatum: 08.06.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 15.05.2010 22:57:19
Ich frage deshalb so speziell weil ich schon mal festgestellt habe, dass es wenn man eingehende Telefonanrufe abfängt um dann irgendwelche Dinge zu tun die noch passieren sollten bevor die eigentliche Telefonapp zündet, sehr wohl darauf ankommt das der Code flott abgearbeitet wird, weil es sonst nicht funktioniert.

Das war der Grund für die Frage.

Genau gesagt gehts darum, wenn ein Anruf mit unterdrückter Nummer hereinkommt, das Klingeln und vibrieren zu unterdrücken. Das ist Zeitkritisch :)

-----
lg Voss - Ach ja und noch was, unsere AndroidPIT-Regeln ლ(╹◡╹ლ)

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Christoph R.de

Rang: Android Prof

Beiträge: 602

Eintrittsdatum: 21.10.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 16.05.2010 04:19:57
Das ist wahr - da muss der Code flott abgearbeitet sein. Hast du das vor? Das Ergebnis würde mich interessieren ...

Mein Stand - ein bischen näher an dem, was es werden soll:

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Christoph R.de

Rang: Android Prof

Beiträge: 602

Eintrittsdatum: 21.10.2009

RE: BroadcastReceiver soll Activity starten
verfasst am 16.05.2010 15:39:01
So. Stand wie oben im Screenshot zu sehen.
Angenommen ich will im Title des AlertDialogs einen QuickContactBadge einbauen - verwende ich dazu AlertDialog.Builder.setCustomTitle(View) und definiere in der zu übergebenen View vorher mein Layout/Inhalt? Woodway oder der richtige Weg?
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
Du bist hier: Android Forum » Android Developer Forum » Android Entwickler Forum » BroadcastReceiver soll Activity starten
Gehe zu: Neue Beiträge | Eigene Threads | Beobachtete Threads

AndroidPIT unterstützen

Gefällt Dir AndroidPIT? Wir freuen uns, wenn Du uns unterstützt. Wie das geht? Klicke einfach auf die unten stehenden Links.

Weiterempfehlen

Gefällt Dir AndroidPIT? Dann empfiehl uns bitte weiter!

Fragen / Hilfe

Du hast Fragen zu AndroidPIT oder willst noch mehr erfahren? Diese Links helfen Dir vielleicht weiter...

  Du liest gerade: BroadcastReceiver soll Activity starten - Android Forum - AndroidPIT. Alle Zeitangaben in UTC+01:00. Es ist jetzt 10:44 Uhr.