studio programacion para notificationchannel notification móviles example edición desarrollo desarrollar curso create aprende aplicaciones android android-intent android-activity android-notifications

programacion - Método de llamada de Android en la notificación haga clic



notificationchannel example (3)

Agregue android:launchMode="singleTop" en su activity en su archivo de manifiesto, protected void onNewIntent(Intent intent) { ... } que el método protected void onNewIntent(Intent intent) { ... } y use este código:

private static final int MY_NOTIFICATION_ID = 1; private NotificationManager notificationManager; private Notification myNotification; void notification() { notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); myNotification = new Notification(R.drawable.next, "Notification!", System.currentTimeMillis()); Context context = getApplicationContext(); String notificationTitle = "Exercise of Notification!"; String notificationText = "http://android-er.blogspot.com/"; Intent myIntent = new Intent(this, YourActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(YourActivity.this, 0, myIntent, Intent.FILL_IN_ACTION); myNotification.flags |= Notification.FLAG_AUTO_CANCEL; myNotification.setLatestEventInfo(context, notificationTitle, notificationText, pendingIntent); notificationManager.notify(MY_NOTIFICATION_ID, myNotification); }

Este código crea una notificación. Si hace clic en él, se ejecuta la aplicación actual (la intención se crea en la Entry , que es mi única Activity ), una versión ligeramente modificada de un blog de desarrolladores de Android:

private void makeIntent() { NotificationManager mgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification note = new Notification(R.drawable.prev, "Status message!", System.currentTimeMillis()); Intent intent = new Intent(this, Entry.class); PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0); note.setLatestEventInfo(this, "New Email", "Unread Conversation", pi); note.flags |= Notification.FLAG_AUTO_CANCEL; mgr.notify(NOTIFY_ME_ID, note); }

Pero no quiero iniciar ninguna actividad, sino simplemente ejecutar un método en la actividad actual. Por lo que he leído hasta ahora, creo que tengo que usar métodos como startActivityForResult() , usar intent-filters e implementar onActivityResult() , pero después de jugar con todas esas cosas, cambiar las cosas en Intent and PendingIntent , todavía no tiene resultado utilizable. ¿Es posible de alguna manera simplemente llamar a un método de Entry (mi Activity principal, en la que se crea la Intent ), o capturar cualquier Intents saliente o entrante cuando hago clic en la Notification Intents hacer?

PD. Mis disculpas si este es un hilo duplicado, SO es bastante lento en este momento, no puedo buscar correctamente.


Esto funcionó al 100% para mí:

Coloque este código en un método:

Intent intent = new Intent(this, YourClass.class); intent.putExtra("NotiClick",true); PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { Notification Noti; Noti = new Notification.Builder(this) .setContentTitle("YourTitle") .setContentText("YourDescription") .setSmallIcon(R.mipmap.ic_launcher) .setContentIntent(pIntent) .setAutoCancel(true).build(); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(0, Noti); }

Luego, en el constructor onCreate / de tu clase haz esto:

if (savedInstanceState == null) { Bundle extras = getIntent().getExtras(); if(extras == null) { //Cry about not being clicked on } else if (extras.getBoolean("NotiClick")) { //Do your stuff here mate :) } }


Intent intent = new Intent(this, Notificationintent.class); PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0); Notification noti = new Notification.Builder(this) .setContentTitle("APP NOTIFICATION") .setContentText(messageValue) .setSmallIcon(R.drawable.ic_launcher) .setStyle(new Notification.BigTextStyle() .bigText(messageValue)) .setContentIntent(pIntent).build(); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // hide the notification after its selected noti.flags |= Notification.FLAG_AUTO_CANCEL; notificationManager.notify(0, noti);