2009-09-23 30 views
13

estoy teniendo problema al enviar datos de servicio a la actividad mediante la Notificación, hago clic en una notificación de una Actividad obtener invoca pero cuando intento añadir algunos parámetros a través de paquete no soy capaz de obtener los parámetros de ese intento llamado, he pasado por el enlace How to send parameters from a notification-click to an activity?El envío de datos de servicio a la actividad

Pero aún no hubo suerte.

¿Ha ocurrido el mismo problema con alguien más?

Gracias de antemano.

+0

¿Cómo se envían los datos del servicio a la actividad? –

Respuesta

18

También debe modificar el archivo Manifest.

Aquí es el ejemplo que funciona:

Estas variables y métodos son miembros de la clase de servicio:

public static final String MOVEMENT_UPDATE = "com.client.gaitlink.AccelerationService.action.MOVEMENT_UPDATE"; 
    public static final String ACCELERATION_X = "com.client.gaitlink.AccelerationService.ACCELERATION_X"; 
    public static final String ACCELERATION_Y = "com.client.gaitlink.AccelerationService.ACCELERATION_Y"; 
    public static final String ACCELERATION_Z = "com.client.gaitlink.AccelerationService.ACCELERATION_Z"; 

private void announceAccelerationChanges()//this method sends broadcast messages 
    { 
     Intent intent = new Intent(MOVEMENT_UPDATE); 
     intent.putExtra(ACCELERATION_X, accelerationX); 
     intent.putExtra(ACCELERATION_Y, accelerationY); 
     intent.putExtra(ACCELERATION_Z, accelerationZ); 

     sendBroadcast(intent); 
    } 

Y esto son los métodos de la actividad principal:

Tienes que registrarte receptor en el método onResume:

@Override 
    public void onResume() 
    { 

     IntentFilter movementFilter; 
     movementFilter = new IntentFilter(AccelerationService.MOVEMENT_UPDATE); 
     accelerationReceiver = new AccelerationServiceReceiver(); 
     registerReceiver(accelerationReceiver, movementFilter); 


     startAccelerationService(); 

     super.onResume(); 
    } 

    private void startAccelerationService() 
    { 
     startService(new Intent(this, AccelerationService.class)); 
    } 

    public class AccelerationServiceReceiver extends BroadcastReceiver 
    { 
     @Override 
     public void onReceive(Context context, Intent intent)//this method receives broadcast messages. Be sure to modify AndroidManifest.xml file in order to enable message receiving 
     { 
      accelerationX = intent.getDoubleExtra(AccelerationService.ACCELERATION_X, 0); 
      accelerationY = intent.getDoubleExtra(AccelerationService.ACCELERATION_Y, 0); 
      accelerationZ = intent.getDoubleExtra(AccelerationService.ACCELERATION_Z, 0); 

      announceSession(); 

      updateGUI(); 
     } 
    } 

Esto es t forma parte del archivo AndroidManifest.xml que debe configurarse para recibir mensajes de difusión:

<activity android:name=".GaitLink" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 

       <action android:name="com.client.gaitlink.CommunicationService.action.ACTIVITY_STATUS_UPDATE" /> 

      </intent-filter> 
     </activity> 
+0

que han intentado esto, pero no funciona como se esperaba .. he escrito declaraciones de registro, sino que se no se muestra en el método onRecieve .what incorrecto puede estar haciendo que estoy haciendo lo mismo que decir! – Sam97305421562

+0

¿Transmite el servicio el mensaje? ¿Se ha iniciado y se está ejecutando BroadcastReceiver en la actividad? ¿Ha agregado el filtro de intención en AndroidManifest.xml? –

+0

he agregado BroadcastReceiver en el archivo AndroidManifest.xml, sí, el servicio lo transmite, ¿cómo puedo confirmar que se ha iniciado BroadcastReceiver? – Sam97305421562

Cuestiones relacionadas