Aller au contenu

[Résolu] Connexion à un service distant (AIDL) via une classe java?


safouane

Recommended Posts

J'ai fait une première application MyService qui fournit un service avec une interface AIDL.

 

J'ai besoin de me connecter à ce service via une autre application. Pour ce faire, j'ai fait une autre application appelée ClientService et j'ai pu obtenir le service. 

 

Maintenant ce que je dois faire est de créer un package java contenant une classe  ServiceClient.java. Cette classe doit se connecter à MyService, puis dans la 2éme version de ma deuxième application  j'importe ce package qui devrait me fournir mon service. 

 

Comment puis-je faire cela?

Lien vers le commentaire
Partager sur d’autres sites

Merci polcandro pour cette attention accordée à ma question.

En effet j'ai pu resoudre mon problème, j'avais un code non fonctionnel mais j'ai trouvé finalement la solution :

Dans la classe Service client:

//ctx : c'est une variable de type context à initialiser dans le constructeur de cette classe
public ServiceClient(Context c) {
this.ctx = c;
}

public boolean connectService () {
 
boolean ret = ctx.bindService(new Intent().setClassName("com.example.service", "com.example.service.MyService"),
                mServiceConnection, Context.BIND_AUTO_CREATE);
 
return ret;
}

public ServiceConnection mServiceConnection = new ServiceConnection(){
 
public void onServiceConnected(ComponentName arg0, IBinder service) {
// TODO Auto-generated method stub
mService= IMyService.Stub.asInterface(service);
 
}
 
public void onServiceDisconnected(ComponentName arg0) {
// TODO Auto-generated method stub
 
}
 
};
//par la suite dans la redéfinition des méthodes avec le service

exemple :
 
public int ReNum(){
int v=-1;
 
if(mServiceConnection !=null)
{
try{
v=mService.getNumber();
}catch(RemoteException e){
 
}
}else{
 
v=-30; // just pour le test dans le débaugage
}
 
return v;
}

//en suite dans l'activité mére il faut tout d'abord importer le package et créer un objet puis profiter de la méthode définie précédement  comme suit:

ServiceClient client = new ServiceClient(this); // J'insistes bcp sur l'histoire du contexte, c'est là où j'avais un problème
client.connectService();

//maintenant nous sommes connectés au service donc nous pouvons tous faire.
 
Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...