2011-03-22 3 views
4

J'ai créé une bibliothèque avec un service dans lequel je veux pouvoir me lier dans plus d'une apk.Service Android dans la bibliothèque

C'est dans mes bibliothèques manifeste

<service class=".service.MyService" android:permission="com.wissen.permission.MY_SERVICE_PERMISSION"> 
<intent-filter> 
<action android:value="com.wissen.testApp.service.MY_SERVICE" /> 
</intent-filter> 
</service> 

et cela est dans mon apk manifeste

<uses-permission android:name="com.wissen.permission.MY_SERVICE_PERMISSION"></uses-permission> 

et i bien sûr ajouté le répertoire lib à l'apk. Je continue à obtenir le service non trouvé (avertissement). Qu'est-ce que je fais mal.

Je lie cette façon

bindService(new Intent("com.wissen.testApp.service.MY_SERVICE"), conn, Context.BIND_AUTO_CREATE); 

Solution:
J'ai créé AIDL pour ces derniers et son travail bien maintenant.

+0

J'ai créé aidl pour ceux-ci et son fonctionnement bien maintenant. – Pintac

Répondre

1

Votre service doit être un service distant. Vous devez créer un fichier * .aidl (interface avec votre service) et le démarrer dans son propre processus. Vous pouvez lire à ce sujet ici: Android Interface Definition Language (AIDL)

+7

Non, il n'est pas nécessaire d'être un service distant à utiliser à partir d'un projet de bibliothèque Android. Cela ne serait nécessaire que si le service était dans une application totalement séparée. – CommonsWare

+3

Vous n'avez donc pas besoin de l'AIDL? – neteinstein

+0

@CommonsWare Quelle serait une autre méthode de déclaration d'un service dans une bibliothèque? – Bryan

24

Le service doit être spécifié dans le manifeste de votre application, et non dans la bibliothèque.

+0

Cela devrait fonctionner correctement. Je pense que les éléments '' '' et les éléments similaires définis dans une bibliothèque seront automatiquement inclus dans le projet hôte, mais je ne pense pas que ce soit déjà fait. Copiez simplement l'élément '' dans le manifeste de la bibliothèque et placez-le dans l'application hôte. – CommonsWare

+0

Je l'ajoute mais le problème avec que je dois définir à la fois dans apk (manifeste) et puis quand je lie dans un et essayez de le lier dans un autre il crée une nouvelle instance n'utilise pas la même instance du service ou ça ressemblait à ça. J'ai mis un log dans le créer et il l'a appelé deux fois aussi j'ai essayé d'appeler un ensemble que j'ai dans mon objet de liaison et il ne reflète pas si appeler le get de la deuxième apk donc il doit créer deux instances. – Pintac

+2

n'est pas là une solution plus élégante que de demander aux développeurs d'ajouter un service dans leur manifeste de l'application? – Ewoks

0

J'ai créé aidl pour ceux-ci et son fonctionnement bien maintenant.

+0

écrivez-vous blog ou allez-vous partager votre code ..Je suis confronté erreur comme stub.interface introuvable ... – NovusMobile

Questions connexes