Benutzer aus Service heraus zur Eingabe auffordern...

  • Antworten:6
  • OffenNicht stickyNicht beantwortet

18.07.2012 15:23:26 via Website

Hallo zusammen!

Bin an einer App die als Service realisiert wird. Sie startet beim Booten des Phones und kommuniziert mit einem Server über eine Socketverbindung. Nun sofern es der Server verlangt, muss sich die App mit PersonenNr anmelden. Jetzt muss ich den Benutzer irgendwie auffordern, damit er die PersonenNr eingibt. Kann man eine Activity von einem Service aus aufrufen, ohne dass man gerade eine Activity dieser App am laufen hat?

Habs folgendermassen probiert:

1Intent intent = new Intent(getApplicationContext(), FahrzeugFahrerverwaltung.class);
2getApplicationContext().startActivity(intent);

Dabei bekomme ich folgende Fehlermeldung:
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

Hat jemand eine Idee oder einen Tipp?

Gruss Michi

Gelöschter Account

18.07.2012 17:01:43 via App

Halt, mach das auf keinen Fall so!

Das Wesen eines Service ist das er im Hintergrund etwas macht während der Benutzer im Vordergrund mit einer anderen App etwas machen könnte.

... und dann knallst Du eine Activity dazwischen? Das ist ein absolutes NoGo.

Du zeigst statt dessen eine Notification an. Diese zieht der Benutzer herunter, wenn er denn will, und landet mit einem Click auf die Notification in der Activity. Ggfs. zeigst Du noch einen Toast an. Alles andere wäre eine Belästigung des Benutzers.

19.07.2012 08:35:42 via Website

Im Normalfall würde ich dir absolut recht geben. Nun in meinem Fall ist die App für eine einzelne bestimmte Firma, die die Phones im Wesentlichen nur für diese eine App und natürlich fürs Telefonieren brauchen. Da muss diese App vor all den anderen Vorrang kriegen..

Habe es nun so gelöst:

1Intent intent = new Intent(getApplicationContext(), IrgendeineKlasse.class);
2intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
3getApplicationContext().startActivity(intent);

Gibt es dazu noch alternativen, oder bessere Möglichkeiten?

Gruss

— geändert am 19.07.2012 08:36:05

Gelöschter Account

19.07.2012 09:29:44 via Website

Ich bleibe dabei.

Damit machst Du Dir, bzw. Dein Auftraggeber sich, keine Freunde. Als Auftragnehmer ist es meines Erachtens auch Deine Aufgabe auf so etwas explizit hinzuweisen.

Ich stelle mir gerade vor wie ein Außendienst-Chef o.ä. gerade einen Anruf tätigen will, oder eine Mail eingibt, und beim Tippen eine Account-Eingabe dazwischen knallt. Das toleriert der höchstens einmal ...

Egal ob Smartphone nur für eine Firma oder nur für eine App, so etwas macht man nicht. Die Leute haben auch zu Hause Smartphones und wissen wie die reagieren sollten. Dafür hat jede Plattform Regelwerke wie man mit dem Benutzer umzugehen hat und unter Android sind das Notifications.

19.07.2012 10:57:04 via App

Ich gebe Harald zwar recht, kann ich mir aber spezifische Anforderungen vorstellen, wo die Notification nicht ausreichend ist. In dem Fall geht es aus meiner Sicht nicht anders als mit dem Start der Activity.

Ich würde allerdings zusätzlich eine Ton- und/oder Vibrations-Notification einbauen, damit der Nutzer auch im Standby über die Aktivität informiert wird...

Herzliche Grüße

Carsten

"Keine Termine und leicht einen sitzen." (Glücksdefinition nach Harald Juhnke)

Gelöschter Account

19.07.2012 11:12:30 via Website

Er könnte, wie von mir ganz oben vorgeschlagen, zusätzlich zur Notification einen Toast raushauen. Der geht auch, ohne das der Benutzer etwas machen muss, von allein wieder weg.

Das mit der Vibration/LED ist eine gute Idee.

Desto länger ich darüber nachdenke - ich glaube ich würde das einfach konfigurierbar machen:

- Hinweis auf abgelaufenen Account
* Notification oder Activity anzeigen
* Vibration ja/nein
* LED ja/nein
...

19.07.2012 13:58:33 via Website

Gute Ideen!

Ich werde das ganze mal abklären. Auch aus meiner Sicht muss man dem Auftraggeber auch als Berater zur Seite stehen und eigene Vorschläge einbringen. Jedoch ist der Kunde immernoch "König" und man kann ihn nicht von seiner Überzeugung abbringen. Ach wir kennen diese Probleme ja alle zu gut! :)

Also vielen Dank Euch zwei!

Gruss