Ce que vous voulez, c'est startActivityForResult(votreIntent, SCAN_VALUE). Votre IME lancera l'activité, qui renverra ensuite une valeur à l'IME.
Donc, votre service fera quelque chose comme suit:
Intent votreIntent = new Intent(this , VotreActivité.class);
this.startActivityForResult(votreIntent, SCAN_VALUE);
Aussi dans votre Service, vous devrez appeler onActivityResult():
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch(requestCode) {
case SCAN_VALUE:
if (resultCode == RESULT_OK) {
//TODO: Créez ici une fonctionnalité!
break;
}
D'accord, maintenant attaquons votre activité lancée. Vous devrez la modifier pour qu'elle corresponde à vos besoins, mais voici comment vous pourriez renvoyer une valeur, disons, depuis un ListAdapter. Vous n'avez pas posté votre code, donc il est difficile de savoir exactement ce que vous faites.
Object o = this.getListAdapter().getItem(position);
String valeurScan = o.toString();
Intent returnIntent = new Intent();
returnIntent.putExtra("ValeurScan", valeurScan);
setResult(RESULT_OK,returnIntent);
finish();
Cela renverra une valeur à l'IME qui a lancé l'activité sous forme de chaîne de caractères. Encore une fois, si vous postez votre code, je pourrai vous donner des instructions plus précises. J'espère que cela vous aidera à comprendre startActivityForResult() en attendant.