微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mediastyle通知在android 11中不起作用

如何解决Mediastyle通知在android 11中不起作用

我的自定义媒体样式通知在我的音乐应用程序的Android 11中不再起作用。在Android 10和更低版本中可以正常使用。

我还需要添加其他代码以便在Android 11中运行吗。

我应该补充一点,摆脱“ .setMediaSession(mediaSessionCompat.getSessionToken()))行会给我通知,但不是带有完整背景色的奥利奥通知,等等。

这是我创建通知代码

public static final String CHANNEL_ID = "Channel1";

//public static final String ACTION_PREVIoUS = "actionprevIoUs";
public static final String ACTION_PLAY = "actionplay";
public static final String ACTION_EXIT = "actionexit";
//public static final String ACTION_NEXT = "actionnext";

public static Notification notification;

public static void createNotification(Context context,Track track,int playbutton,int exitApp,int pos,int size) {

    if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.O) {

        notificationmanagerCompat notificationmanagerCompat = notificationmanagerCompat.from(context); 
        MediaSessionCompat mediaSessionCompat = new MediaSessionCompat(context,"tag"); /

        mediaSessionCompat.setActive(true);

        Bitmap icon = BitmapFactory.decodeResource(context.getResources(),R.drawable.half); 

        Intent intentPlay = new Intent(context,NotificationActionService.class)
                .setAction(ACTION_PLAY);
        PendingIntent pendingIntentPlay = PendingIntent.getbroadcast(context,intentPlay,PendingIntent.FLAG_UPDATE_CURRENT);

        Intent intentExit = new Intent(context,NotificationActionService.class)
                .setAction(ACTION_EXIT);
        PendingIntent pendingIntentExit = PendingIntent.getbroadcast(context,intentExit,PendingIntent.FLAG_UPDATE_CURRENT);

        exitApp = R.drawable.ic_close_black;

    
        Intent intentOpenApp = new Intent(context,MainActivity.class);
        PendingIntent pendingIntentOpenApp = PendingIntent.getActivity(context,intentOpenApp,0);

      

         Notification.MediaStyle style = new Notification.MediaStyle();
        androidx.core.app.NotificationCompat.Builder builder = new androidx.core.app.NotificationCompat.Builder(this,NOTIFICATION_CHANNEL_ID)
                //NotificationCompat.Builder builder = new NotificationCompat.Builder( this,NOTIFICATION_CHANNEL_ID );
                .setSmallIcon(R.drawable.ic_audiotrack)
                .setVisibility(androidx.core.app.NotificationCompat.VISIBILITY_PUBLIC) 
                .setLargeIcon(icon)
                .setContentTitle( "TEST" )
                .setContentText(notificationText)
                .setContentIntent(pendingIntentOpenApp) 
                .setShowWhen(false) 
                .setongoing(true)           .setBadgeIconType(androidx.core.app.NotificationCompat.BADGE_ICON_NONE) 
                .setonlyAlertOnce(true)
                .addAction(action)
                .addAction(generateAction(R.drawable.ic_close_black,"Exit",ACTION_EXIT))
                .setStyle(new NotificationCompat.MediaStyle()
                        .setShowActionsInCompactView(0,1)
                        .setMediaSession(mediaSession.getSessionToken())); 


        mediaSession.setMetadata
            (new MediaMetadataCompat.Builder()
                .putBitmap(MediaMetadataCompat.MetaDATA_KEY_ALBUM_ART,icon)
                .putString(MediaMetadata.MetaDATA_KEY_TITLE,"TEST TITLE")
                .putString(MediaMetadata.MetaDATA_KEY_ARTIST,"TEST ARTIST")
                .build()
        );



        startForeground(1,builder.build()); 
    }


}

解决方法

您现在还需要向媒体会话中添加元数据:

mediaSessionCompat.setMetadata(
    new MediaMetadataCompat.Builder()
        .putString(MediaMetadata.METADATA_KEY_TITLE,track.getTitle())
        .putString(MediaMetadata.METADATA_KEY_ARTIST,track.getArtist())
        .build()
    );
,

我遇到了同样的问题,并且只有在将 compileSdkVersion 设置为 30 后才能解决。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。