2011-01-09 15 views
16

Ich brauche etwas Hilfe bei der Entwicklung von zwei Android-Anwendungen (auf einem Telefon), die miteinander kommunizieren.Android-Kommunikation zwischen zwei Anwendungen

  1. Anwendung A eine Zeichenfolge Anwendung sendet B.
  2. Anwendung B die Zeichenkette zum Beispiel "startClassOne" empfängt, app B unter Verwendung eines Verfahrens beginnt ClassOne und erhält das Ergebnis. Das Ergebnis wird zurückgeschickt (wieder als String!) An die Anwendungs ​​A.
  3. Anwendung A schreibt in der Konsole die empfangene Zeichenfolge von B.
+0

Möchten Sie einen Chat wie eine App erstellen? –

+0

Nein, die Apps sollten miteinander kommunizieren, die Aktivitäten in App B sollten Dinge wie Vibrieren, das Licht ändern und so weiter, und wenn zum Beispiel das Vibrieren gestartet wird, sendet App B eine Ergebniszeichenfolge wie ("vibrate successful") zu App A (App a wird später viel mehr tun, aber für dieses Beispiel muss ich nur zwischen diesen beiden Apps kommunizieren) – androidTesting

Antwort

33

Hallo, ich brauche Hilfe, wie zwei der Entwicklung beginnen Android-Anwendungen (an einem Telefon), die miteinander kommunizieren.

Im Allgemeinen möchten Sie nicht eine Anwendung in zwei künstlich teilen, besonders wenn Sie beide Autor sind.

aber sagen, dass Sie folgende Möglichkeiten:

  • haben Anwendung B einen ein IntentService aussetzen, die über eine mit den Ergebnissen über startService() von Anwendung A, genannt wird PendingIntent von createPendingResult() oder ein Messenger oder eine Sendung zurückgeleitet Intent oder eine ResultReceiver; oder
  • haben Anwendung B eine Service mit einer API in AIDL definiert belichten, und haben Anwendung A binden an diesen Dienst, dann haben Anwendung einen Aufruf Methoden Anwendung B oder
  • eine Broadcast Intent von Anwendung A an die Anwendungs ​​B senden , wobei die Ergebnisse oberhalb von der gleichen Liste von Optionen in der ersten Kugel zurückgeleitet werden oder
  • haben Anwendung B einen Content-Provider implementieren und hat Anwendung A ContentResolver verwenden, den Content-Provider
  • und so weiter
  • zu manipulieren

Stellen Sie sicher, dass Sie alle Sicherheitsaspekte Ihres Vorgehens durcharbeiten, da Sie eine API nicht nur für die Verwendung von Anwendung A bereitstellen, sondern für jede Anwendung auf dem Gerät, außer Sie sichern sie mit Berechtigungen.

+0

Nehmen wir an, wir haben eine App, die wissen muss, ob 5 andere Apps eine bestimmte Datei in ihren Daten haben Mappe. Was ist der beste zu verwendende Mechanismus, damit die erste App eine Nachricht senden und eine "Ja" -Ergebniszeichenfolge oder einen echten Booleschen Wert von der ersten App erhalten kann, die die Datei enthält? – trusktr

+0

Über die erste Option, die 'ResultReceiver' verwendet, wenn ich versuche, in meiner zweiten Anwendung den Ergebnisempfänger parcelable von intent zu bekommen, habe ich:' E/Parcel: Klasse nicht gefunden beim Unmarshalling: com.myapp.demo.DemoActivity $ 1' Gibt es einen kniffligen Teil ? – L3K0V

+0

@ L3K0V: Ich empfehle Ihnen, eine separate Stapelüberlauf-Frage zu stellen, in der Sie ein minimales, vollständiges und überprüfbares Beispiel Ihres Problems angeben können, das den Java-Stack-Trace und den Code enthält, auf den sich der Trace bezieht. – CommonsWare

Verwandte Themen