问题描述
我的自定义媒体样式通知在我的音乐应用程序的Android 11中不再起作用。在Android 10和更低版本中可以正常使用。
我应该补充一点,摆脱“ .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 后才能解决。