Désactiver la notification Android en cours via le bouton Action sans ouvrir la demande

J'ai une application qui a une notification permanente pour aider à la mémorisation. Je veux pouvoir rejeter cette notification avec l'un des boutons d'action, mais je ne veux pas ouvrir l'application lorsque le bouton est touché. Je préférerais utiliser les boutons d'action de notification intégrés et ne pas créer un objet RemoteViews pour remplir la notification. J'ai vu une mention de publication en utilisant un BroadcastReceiver sur ce bouton qui est reçu dans mon application, et bien que son tutoriel ait été très peu utile, il semble que cela se diriger dans la bonne direction.

Intent resultIntent = new Intent(getBaseContext(), Dashboard.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(getBaseContext()); stackBuilder.addParentStack(Dashboard.class); stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_UPDATE_CURRENT ); Intent cancel = new Intent(getBaseContext(), CancelNotification.class); stackBuilder.addParentStack(Dashboard.class); stackBuilder.addNextIntent(cancel); PendingIntent pendingCancel = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_UPDATE_CURRENT ); NotificationCompat.Builder mb = new NotificationCompat.Builder(getBaseContext()); mb.setSmallIcon(R.drawable.cross_icon); mb.setContentTitle(ref); mb.setContentText(ver); mb.setPriority(NotificationCompat.PRIORITY_LOW); mb.setOngoing(true); mb.setStyle(new NotificationCompat.BigTextStyle().bigText(ver)); mb.setContentIntent(resultPendingIntent); mb.addAction(R.drawable.ic_cancel_dark, "Dismiss", pendingCancel); manager.notify(1, mb.build()); 

  • Impossible de résoudre la méthode 'getSupportFragmentManager ()' dans Fragment
  • Bibliothèque client C # pour souscrire / publier MQTT (Really Small Message Broker)
  • FragmentPagerAdapter Glissez pour afficher ListView 1/3 Largeur de l'écran
  • 'Impossible de retourner la tête d'arbre null ou feuille' avec CoreNLP sur Android
  • Bouton d'accueil de la barre d'action Android
  • Android ListActivity - comment ajouter une vue sous ListView?
  • Comment trouver la version de la bibliothèque de Gradle Dependency? Android Studio
  • Comment détecter le support d'emoji sur Android par code
  • Quelle est l'alternative à getActionView () avant le niveau API 11 dans Android?
  • View.getDrawingCache () ne fonctionne qu'une fois
  • AdB -s Emu Geo Fix ne fonctionne pas sans utiliser telnet
  • Reproduction de HoneyIb GMail UI avec des fragments
  • One Solution collect form web for “Désactiver la notification Android en cours via le bouton Action sans ouvrir la demande”

    Commencez par ceci:

     int final NOTIFICATION_ID = 1; //Create an Intent for the BroadcastReceiver Intent buttonIntent = new Intent(context, ButtonReceiver.class); buttonIntent.putExtra("notificationId",NOTIFICATION_ID); //Create the PendingIntent PendingIntent btPendingIntent = PendingIntent.getBroadcast(context, 0, buttonIntent,0); //Pass this PendingIntent to addAction method of Intent Builder NotificationCompat.Builder mb = new NotificationCompat.Builder(getBaseContext()); ..... ..... ..... mb.addAction(R.drawable.ic_Action, "My Action", btPendingIntent); manager.notify(NOTIFICATION_ID, mb.build()); 

    Créer le BroadcastReceiver:

     public class ButtonReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int notificationId = intent.getIntExtra("notificationId", 0); // Do what you want were. .............. .............. // if you want cancel notification NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); manager.cancel(notificationId); } } 

    Si vous ne souhaitez pas afficher une activité lorsque l'utilisateur clique sur la notification, définissez l'intention de passer dans setContentIntent de cette manière:

     PendingIntent resultPendingIntent = PendingIntent.getActivity(context, 0, new Intent(), 0); ...... ...... mb.setContentIntent(resultPendingIntent); 

    J'espère que cela t'aides!

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.