2010-11-23 17 views
0

Ich habe zwei Dienste: ein Anbieter von Daten und einem Empfänger.Weitergabe von Daten von einem Service zu einem anderen

ich versuche, auf diese Weise zu tun:

PROVIDER:

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

EMPFÄNGER

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

aber ich kann nicht die getIntent (verwenden).

Jemand kann mir helfen? Tnks

Antwort

0

Sie können den Wert von SENSRO_STRING als abrufen:

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

Wenn Sie in einem BroadcastReceiver zum Beispiel sind in der überschrieben onReceived Methode können Sie nennen als:

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

Nein Sie müssen getInent() aufrufen, Ihre Absicht wird dem Empfängerdienst in onStartCommand() übergeben, der Ihr Einstiegspunkt von einem Aufruf von startService() sein wird.

Beispielcode geändert von here.

Receiver Service:

// 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); 
} 
Verwandte Themen