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ónNotificationManager 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(); }