android notificationmanager

android - ¿Cómo configurar click listener para la notificación?



notificationmanager (3)

Básicamente, debe colocar la clase de actividad como parte de su intención en su PendingIntent. Actualmente tu intención está vacía. Para redirigir a una nueva actividad, 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);

Estoy utilizando el siguiente código para iniciar una notificación cuando se inicia un Servicio a través de AlarmManager:

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 establezco una intención para este elemento para que cuando el usuario haga clic en él, inicie una determinada actividad?


En cuanto al comentario de yoshi24, es posible que pueda configurar 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);

Usted debe estar consciente de esto también antes de ir a los intentos pendientes

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

ACTUALIZAR algo como esto funcionará para ti

int su mainfest

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

en tu 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 }


Lo hice,

  • Agrego Intent.FLAG_ACTIVITY_CLEAR_TOP a la nueva intención

    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);

  • Oncreate hago como sigue:

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