2012-08-14 19 views
16

Tengo que pasar el parámetro de MyActivity.class a TestService.class. MyActivity es una clase de actividad y TestService es un servicio que he creado para enviar mensajes. Tengo que pasar el parámetro de Actividad al Servicio, pero cuando llamo al Intent i = getIntent(); en clase de servicio, obtengo un error getIntent() no está definido.Llamando al método getIntent en el servicio

Entonces, ¿cómo puedo enviar parámetros de mi actividad al servicio?

Respuesta

43

Comience su servicio de esta manera;

Intent ir=new Intent(this, Service.class); 
ir.putExtra("data", data); 
this.startService(ir); 

Adjunte sus datos como un intento extra.

Luego, para recuperar los datos del servicio;

data=(String) intent.getExtras().get("data"); 

para que pueda acceder a su parámetro, ya sea del onHandleIntent o parámetro Intención onStartCommand. (dependiendo del tipo de servicio que esté ejecutando) Por ejemplo;

Servicio

protected void onStartCommand (Intent intent, int flags, int startId) { 
    data=(String) intent.getExtras().get("data"); 
} 

public int onStartCommand (Intent intent, int flags, int startId)

IntentService

protected void onHandleIntent(Intent intent) { 
    data=(String) intent.getExtras().get("data"); 
} 

protected abstract void onHandleIntent (Intent intent)

+0

Gracias .. Funcionó –

+0

y lo que es en caso de servicios a nivel de sistema como la accesibilidad que comenzó por sí misma? –

+0

¿Qué sucede si necesito obtener la intención en 'onCreate()'? – CopsOnRoad

2

Cuando iniciar el servicio con la intención (con datos) a continuación, que la intención es recibida en el método
onStart(Intent intent, int startId) o

onStartCommand (Intent intent, int flags, int startId) 
{ 
this **intent** is your intent with data 
} 

de su Service.So reciben sus datos de este método que tiene la intención como parámetro

Cuestiones relacionadas