You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中MediaStyle通知构建问题求助

Android中MediaStyle通知构建问题求助

各位大佬好,我在开发Android应用时,使用NotificationCompat.MediaStyle构建媒体通知遇到了问题,具体问题出在调用.setStyle(new NotificationCompat.MediaStyle()这一步。

先给大家看一下我的导入语句:

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.media.AudioAttributes;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.media.session.MediaSessionCompat;
import android.support.v4.media.session.PlaybackStateCompat;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.core.app.ActivityCompat;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import androidx.media.session.MediaButtonReceiver;
import com.squareup.picasso.Picasso;
import java.io.IOException;

下面是我构建媒体通知的方法:

//Notification
private void showMediaStyleNotification(String imageUrl, String title) {

// Build the notification
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "channel_id")
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle(title)  // Set content title using the title from the intent
.setContentText("Notification Text")
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_foreground))
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setStyle(new NotificationCompat.MediaStyle()
.setMediaSession(new MediaSessionCompat(this, "tag").getSessionToken())
.setShowActionsInCompactView(0, 1)
.setShowCancelButton(true)
.setCancelButtonIntent(
MediaButtonReceiver.buildMediaButtonPendingIntent(
this,
PlaybackStateCompat.ACTION_STOP
)
)
)
.addAction(new NotificationCompat.Action(
R.drawable.play_icon,
"Play",
MediaButtonReceiver.buildMediaButtonPendingIntent(
this,
PlaybackStateCompat.ACTION_PLAY
)
))
.addAction(new NotificationCompat.Action(
R.drawable.pause_icon,
"Pause",
MediaButtonReceiver.buildMediaButtonPendingIntent(
this,
PlaybackStateCompat.ACTION_PAUSE
)
));

// Load the image from the URL and set it as a large icon
try {
Bitmap bitmap = Picasso.get().load(imageUrl).get();
builder.setLargeIcon(bitmap);
} catch (IOException e) {
e.printStackTrace();
}

// Show the notification
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
}
notificationManager.notify(1, builder.build());
}

我已经尝试过两种方法来解决,但都没效果:

  • 手动导入androidx.core.app.NotificationCompat.MediaStyle,但问题依旧
  • 添加了最新版本的依赖implementation "androidx.media:media:1.7.0",还是无法正常使用MediaStyle

有没有大佬能帮我看看问题出在哪呀?

备注:内容来源于stack exchange,提问作者Sriram S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:18:07