2011-08-25 13 views
12

estoy usando el siguiente código para lanzar una notificación cuando un servicio se inicia a través AlarmManager:¿Cómo se configura el oyente click para notificación?

nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); 
CharSequence from = "App"; 
CharSequence message = "Getting Latest Info..."; 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(), 0); 
Notification notif = new Notification(R.drawable.icon, 
    "Getting Latest Info...", System.currentTimeMillis()); 
notif.setLatestEventInfo(this, from, message, contentIntent); 
nm.notify(1, notif); 

¿Cómo se configura un intento por este concepto de forma que cuando el usuario hace clic en él, que lanzará un cierto ¿actividad?

Respuesta

12

Básicamente necesita poner la clase Activity como parte de su intento en su PendingIntent. Actualmente tu intención está vacía. Para redirigir a la nueva actividad, que debe ser:

// This line of yours should contain the activity that you want to launch. 
// You are currently just passing empty new Intent() 
PendingIntent contentIntent = 
    PendingIntent.getActivity(this, 0, new Intent(this, MyActivity.class), 0); 

+0

¿Podría darnos un ejemplo? – yoshi24

+0

He agregado el código relevante que necesita para modificar – momo

+0

También sé esto fuera de la pregunta, ¿de todos modos podría establecer un extra para pasar con él? – yoshi24

23

En cuanto a la observación del yoshi24, puede ser capaz de establecer extras como este.

final Intent intent = new Intent(this, MyActivity.class); 
intent.setData(data); 
intent.putExtra("key", "value"); 
final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 

Necesita ser consciente de esto y antes de ir a las intenciones pendientes

https://stackoverflow.com/questions/1198558/how-to-send-parameters-from-a-notification-click-to-an-activity

ACTUALIZACIÓN algo como esto va a funcionar para usted

int su mainfest

<activity android:name=".MyActivity" android:launchMode="singleTop" ... /> 

en su actividad

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    processIntent(getIntent()); 
} 

@Override 
protected void onNewIntent(Intent intent) {  
    processIntent(intent); 
}; 

private void processIntent(Intent intent){ 
    //get your extras 
} 
+0

¿A qué se refiere el enlace al que se refiere, que estoy tratando de hacer? – yoshi24

+1

es lo mismo que publicó – Samuel

+1

tiene que cambiar la bandera de intención como ** android: launchMode = "singleTask" ** en el manifiesto y anular ** onNewIntent (Intent intennt) ** dentro de la actividad. esto te permitirá recibir los parámetros. – Samuel

6

lo hice,

  • agrego Intent.FLAG_ACTIVITY_CLEAR_TOP al nuevo intento

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.ic_launcher, 
         "A new notification", System.currentTimeMillis()); 
    // Hide the notification after its selected 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    
    Intent intent = new Intent(this, NoficationDemoActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    Bundle bundle = new Bundle(); 
    bundle.putString("buzz", "buzz"); 
    intent.putExtras(bundle); 
    PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0); 
    notification.setLatestEventInfo(this, "This is the title", 
         "This is the text", activity); 
    notification.number += 1; 
    notificationManager.notify(0, notification); 
    
  • alcrear hago de la siguiente manera:

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    if(getIntent().getExtras()!=null){ 
        Toast.makeText(this, "Click", Toast.LENGTH_SHORT).show(); 
    } 
    
Cuestiones relacionadas