2010-11-23 36 views
0

J'ai deux services: un fournisseur de données et un récepteur.transmettre des données d'un service à un autre

i essayer de le faire de cette façon:

PRESTATAIRE:

Intent i1 = new Intent(feasibilityEngine.this, SOSFeeder.class); 
i1.putExtra(SENSOR_STRING, "f[i]"); 
startService(i1); 

RÉCEPTEUR

Intent intent = getIntent(); 
Bundle b = new Bundle(); 
int i = b.getInt(SENSRO_STRING); 

mais je ne peux pas utiliser le getIntent().

Quelqu'un peut-il m'aider? tnks

Répondre

0

Vous pouvez récupérer la valeur de SENSRO_STRING comme:

Bundle b = getIntent().getExtras(); 
int i = b.getInt(SENSRO_STRING); 

Si vous êtes dans un BroadcastReceiver par exemple, dans la méthode onReceived réécrits vous pouvez appeler comme:

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    Bundle b = intent.getExtras(); 
    int i = b.getInt(SENSRO_STRING); 
0

Non besoin d'appeler getInent(), votre intention sera transmise au service récepteur dans le onStartCommand(), qui sera votre point d'entrée d'un appel startService().

code d'échantillon modifié à partir de here.

service récepteur:

// This is the old onStart method that will be called on the pre-2.0 
// platform. On 2.0 or later we override onStartCommand() so this 
// method will not be called. 
@Override 
public void onStart(Intent intent, int startId) { 
    handleCommand(intent); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    handleCommand(intent); 
    // We want this service to continue running until it is explicitly 
    // stopped, so return sticky. 
    return START_STICKY; 
} 

private void handleCommand(Intent intent) { 
    // should this be getStringExtra instead? 
    int i = intent.getIntExtra(SENSRO_STRING, -1); 
}