2010-12-05 10 views
2

J'essaie d'avoir une application qui fonctionne comme un service sur Android, d'autres applications seront distribuées qui ont besoin de communiquer avec elle.Comment communiquer entre les applications sur Android

Il a été implémenté en tant que service et les applications client en cours fonctionnent correctement lorsqu'elles sont intégrées à la même application.

Toutefois, suite http://developer.android.com/guide/developing/tools/aidl.html J'ai des problèmes pour faire ce travail pour les applications clientes, en particulier la ligne

« Dans votre mise en œuvre de ServiceConnection.onServiceConnected(), vous recevrez une instance IBinder (service appelé). Appel YourInterfaceName .Stub.asInterface ((IBinder) service) pour convertir le paramètre renvoyé en type YourInterface. "

Étant donné que les applications sont distribuées séparément Je n'ai pas accès à YourInterfaceName et le copier dans l'application client se sent vraiment comme « le mauvais sens »

Si quelqu'un pourrait fournir un pointeur à la documentation/un livre/code source ce serait très utile, merci

(et pardonnez l'ironie en mon nom, était un peu une plaisanterie)

Répondre

2

Le livre « Android Pro 2 » a un exemple décent sur AIDL ...

+0

Vous trouvez plutôt ennuyeux que la réponse soit de se déconnecter et de lire un livre, mais l'exemple former ce livre était beaucoup plus facile à comprendre que toute la documentation en ligne, tout fonctionne maintenant, merci. –

0

que font exactement les applications doivent communiquer entre eux? S'il s'agit de données, alors vous pouvez regarder ContentProvider.

Vous pouvez également partager des informations via Intent.putExtra.

+0

Son service central et les applications ont besoin de communiquer avec elle pour décider si le service a commencé ou non. Le code actuel est disponible sur https://github.com/daleharvey/couch-android-launcher/blob/api/src/org/couchdb/android/CouchService.java les clients qui utilisent CouchDB auraient besoin de savoir si oui ou non a commencé etc –

0

Vous devez copier (ou inclure ou réécrire avec des fonctionnalités comparables) la partie du code qui fait la fin du client du Binder IPC dans les projets client.

+0

Pourriez-vous développer ce point? Je n'ai aucun problème pour implémenter le code client dans le client, c'est juste que chaque exemple que je vois http://developer.android.com/guide/developing/tool ​​ou http://developer.android.com/reference/android/ app/Service.html suppose que la classe RemoteService est disponible pour le client, et je ne peux pas simplement mettre tout ce code dans le client car il utiliserait la version locale au lieu de se connecter au distant. –

+0

Vous conservez la partie qui constitue le côté application de l'interface et supprimez la partie qui forme le côté du service (ou supprimez simplement ce qui l'instancie) –

Questions connexes