2011-01-09 7 views
16

Ho bisogno di aiuto per iniziare a sviluppare due applicazioni Android (su un telefono) che comunicano tra loro.Comunicazione Android tra due applicazioni

  1. Application A invia una stringa di applicazione B.
  2. applicazione B riceve la stringa, ad esempio "startClassOne", app B utilizzando un metodo inizia ClassOne e ottiene il risultato. Il risultato viene inviato di nuovo (di nuovo come stringa!) Di applicazione A.
  3. applicazione A scrive nella console stringa ricevuta da B.
+0

Vuoi creare una chat come l'app? –

+0

no, le app dovrebbero comunicare tra loro, le attività nell'app B dovrebbero fare cose come vibrare, cambiare la luce e così via, e se ad esempio viene attivata la vibrazione, l'app B invia una stringa di risultati come ("vibra riuscita") per l'app A (l'app a farà molto più tardi, ma per questo esempio ho solo bisogno di comunicare tra queste due app) – androidTesting

risposta

33

Ciao, ho bisogno di aiuto su come iniziare a sviluppare due applicazioni Android (su un telefono) che comunicano tra loro.

Nel complesso, in genere non si desidera dividere artificialmente un'applicazione in due, in particolare se si è l'autore di entrambi.

Detto questo, è possibile:

  • avere applicazione B esporre un un IntentService che si chiamerà via startService() dalla applicazione A, con risultati passati indietro tramite un PendingIntent da createPendingResult() o un Messenger o una trasmissione Intent oppure a ResultReceiver; o
  • avere applicazione B esporre un Service con un'API definita nella AIDL, e hanno applicazione un binding a tale servizio, poi l'applicazione A metodi call su Application B, o
  • inviare una trasmissione Intent da Applicazione A a Application B , con risultati vengono passati indietro per la stessa roster di opzioni nel primo proiettile sopra, o
  • avere applicazione B implementare un fornitore di contenuti, e hanno applicazione un uso ContentResolver per manipolare che fornitore di contenuti
  • e così via

Assicurati di lavorare con tutte le implicazioni sulla sicurezza di ciò che stai facendo, dal momento che stai esponendo un'API non solo per l'applicazione A da utilizzare, ma per qualsiasi applicazione sul dispositivo da utilizzare, a meno che tu non la protegga con le autorizzazioni.

+0

Diciamo che abbiamo un'app che ha bisogno di sapere se altre 5 app hanno un file specifico nei loro dati cartella. Qual è il miglior meccanismo da utilizzare in modo che la prima app possa inviare un messaggio e ricevere una stringa di risultato "sì" o un vero booleano dalla prima app che ha il file? – trusktr

+0

Sulla prima opzione che utilizza 'ResultReceiver' quando provo a ottenere il ricevitore dei risultati in modo appropriato dall'intenzione nella mia seconda applicazione, ho ottenuto:' E/Parcel: Classe non trovata quando unmarshalling: com.myapp.demo.DemoActivity $ 1' C'è qualche parte difficile ? – L3K0V

+0

@ L3K0V: Si consiglia di chiedere una domanda di overflow dello stack separata, in cui è possibile fornire un esempio minimo, completo e verificabile del problema, che includa la traccia dello stack Java e il codice a cui fa riferimento la traccia. – CommonsWare