简体   繁体   English

Android 通知未显示操作按钮

[英]Android Notification not displaying action buttons

Below is the method I am using to build a notification for a media player application.下面是我用来为媒体播放器应用程序构建通知的方法。 Currently, the song information is being displayed correctly but the action buttons for prev, play, next are not being displayed.目前,歌曲信息显示正常,但未显示上一个、播放、下一个操作按钮。

This is what is displayed with the notification after calling buildNotification();这是调用 buildNotification() 后与通知一起显示的内容;

在此处输入图像描述

private void buildNotification(Notification.Action action) {
    String ID = "sage.musicplayer.Service.MusicService";

    /*Bitmap albumArtBitmap = null;
    if(album_art != null) {
        try {
            albumArtBitmap = Glide.with(getApplicationContext()).asBitmap().load(album_art).into(100, 100).get();
        }catch(Exception e) {
            e.printStackTrace();
        }
    }else if(albumID > -1) {
        albumArtBitmap = musicUtils.getAlbumArt(albumID);
    }else{
        albumArtBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.new_album_art);
    }*/

    Intent intent = new Intent(MusicService.this, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
    Intent intentPrev = new Intent(ACTION_PREV);
    Intent intentPlayPause;
    if(isPng())
        intentPlayPause = new Intent(ACTION_PAUSE);
    else
        intentPlayPause = new Intent(ACTION_PLAY);
    Intent intentNext = new Intent(ACTION_NEXT);
    PendingIntent pendingPrev = PendingIntent.getActivity(this, 0, intentPrev, PendingIntent.FLAG_IMMUTABLE);
    PendingIntent pendingPlayPause = PendingIntent.getActivity(this, 0, intentPlayPause, PendingIntent.FLAG_IMMUTABLE);
    PendingIntent pendingNext = PendingIntent.getActivity(this, 0, intentNext, PendingIntent.FLAG_IMMUTABLE);

    NotificationCompat.Builder notification = new NotificationCompat.Builder(getApplicationContext());
    notification.setContentTitle(songTitle)
            .setWhen(System.currentTimeMillis())
            .setChannelId(ID)
            .setSmallIcon(R.drawable.logo)
            .setContentText(songArtist)
            .setLargeIcon(musicUtils.getAlbumArt(albumID))
            .setDeleteIntent(pendingIntent)
            .setPriority(Notification.PRIORITY_MAX)
            .setStyle(new androidx.media.app.NotificationCompat.MediaStyle().setMediaSession(MediaSessionCompat.Token.fromToken(mediaSession.getSessionToken())))
            .addAction(R.drawable.prev, "Prev", pendingPrev)
            .addAction(R.drawable.playbutton, "Play", pendingPlayPause)
            .addAction(R.drawable.next, "Next", pendingNext);

    NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(getApplicationContext());
    notificationManagerCompat.notify(NOTIFY_ID, notification.build());
}

If your drawables (R.drawable.prev, etc) are vectorial and not images, it won't work.如果您的可绘制对象(R.drawable.prev 等)是矢量而不是图像,则它将不起作用。 I had the same issue today.我今天有同样的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM