wake-up-neo.com

Android-Benachrichtigungsschaltflächen werden nicht angezeigt

Dies ist mein Code zum Einrichten einer Benachrichtigung mit Schaltflächen.

Intent receiverIntent = new Intent(ctx, ResponsivePrefsActivity.class);
        PendingIntent pReceiverIntent = PendingIntent.getActivity(ctx, 1, receiverIntent, 0);
        Intent clearIntent = new Intent(ctx, ResponsivePrefsActivity.class);
        clearIntent.setAction("clear");
        PendingIntent pClearIntent = PendingIntent.getActivity(ctx, 1, clearIntent, 0);

        Intent colorsIntent = new Intent(ctx, ResponsivePrefsActivity.class);
        colorsIntent.setAction("colors");
        PendingIntent pColorsIntent = PendingIntent.getActivity(ctx, 1, colorsIntent, 0);

        Intent animationIntent = new Intent(ctx, ResponsivePrefsActivity.class);
        animationIntent.setAction("animation");
        PendingIntent pAnimation = PendingIntent.getActivity(ctx, 1, animationIntent, 0);

        Notification.Builder builder;
        builder = new Notification.Builder(ctx).setSmallIcon(R.drawable.ic_launcher).setAutoCancel(false)
                .setContentTitle("Draw Me: A Live Wallpaper").setContentText("Never get bored again!")
                .setContentIntent(pReceiverIntent).addAction(R.raw.ic_menu_close_clear_cancel, "Clear", pClearIntent)
                .addAction(R.raw.ic_menu_edit, "Colors", pColorsIntent).addAction(R.raw.ic_menu_play_clip, "Animation", pAnimation);
        Notification notification = builder.build();

        NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(0, notification);

Die Benachrichtigung wird angezeigt, die Schaltflächen jedoch nicht. Mein Gerät verfügt über Android 4.1.1. Ich habe diese Benachrichtigung in einem Fragment eingerichtet. Was mache ich falsch? Vielen Dank!

34

Lassen Sie mich Ihnen etwas sagen, was wirklich unangenehm ist ... Wenn Sie etwas in Ihrer Laufenden Benachrichtigung haben, werden die Schaltflächen nicht angezeigt. Normalerweise geschieht dies, wenn Sie das Telefon über einen USB-Anschluss an den PC angeschlossen haben Ihr Problem

122
CommonMan

Nur eine Erinnerung für alle, die ein ähnliches Problem haben ... Wie in Android Notifications Guide können Benachrichtigungen in zwei Stilen erscheinen:

  • Normalansicht, in der die Aktionsschaltflächen standardmäßig nicht angezeigt werden (und der Benutzer muss die Benachrichtigung erweitern, damit sie angezeigt wird)
  • Großansicht, die angezeigt wird, wenn die Benachrichtigung an erster Stelle der Benachrichtigungsliste steht oder der Benutzer die Benachrichtigung erweitert hat.

Um zu erzwingen, dass die Benachrichtigung in Big View angezeigt wird, müssen Sie sie einfach oben in der Benachrichtigungsliste platzieren. Sie können dies tun, indem Sie die When-Eigenschaft auf 0 setzen. Damit ist sie die älteste Benachrichtigung. (Manchmal wollen wir das vielleicht nicht). Also rufe 

setWhen(0)

auf Ihre Benachrichtigung und Sie sind fertig. 

27
paulahniuk

Die Schaltflächen werden nicht angezeigt, wenn eine laufende Benachrichtigung in der Liste vorhanden ist, z. B. ein Media Player-Steuerelement oder die IME-Umschalteroptionen, wenn Sie Text bearbeiten.

Glücklicherweise kann dies durch die Festlegung der Priorität der Benachrichtigung Nizza und Hoch überwunden werden. Ich habe immer nur Notification.PRIORITY_MAX verwendet, um das zu umgehen, aber PRIORITY_HIGH scheint auch zu funktionieren. Setze es so:

Notification notification = new Notification.Builder(myContext)
.setContentTitle(res.getString(R.string.my_title))
.setPriority(Notification.PRIORITY_MAX)
//The rest of your options
.build();
23
Captain Blammo

Tu das einfach :::

.setPriority(Notification.PRIORITY_MAX)
.setWhen(0)

vollständiger Code ist:

Notification noti = new Notification.Builder(this)
            .setContentTitle("New mail from " + "[email protected]")
            .setContentText("Subject").setSmallIcon(R.drawable.ic_launcher)
            .setContentIntent(pIntent)
            .setPriority(Notification.PRIORITY_MAX)
            .setWhen(0)
            .addAction(R.drawable.ic_launcher, "Call", pIntent)
            .addAction(R.drawable.ic_launcher, "More", pIntent)
            .addAction(R.drawable.ic_launcher, "And more", pIntent).build();
16
user2190487

In meinem Fall wurden die Aktionsschaltflächen nicht angezeigt, da ich eine benutzerdefinierte Ansicht für den Benachrichtigungsinhalt mit RemoteViews () verwendet habe.

0
s-hunter