提问人:gregko 提问时间:11/3/2023 最后编辑:gregko 更新时间:11/6/2023 访问量:32
Android 13+ MediaStyle 通知 .addAction() 按钮在调用媒体会话后消失 setPlaybackState()
Android 13+ MediaStyle notification .addAction() buttons disappear after a call to media session setPlaybackState()
问:
我正在尝试在我的 Android 应用程序中使用 MediaStyle 通知,并添加了一些操作按钮。
NotificationCompat.Builder myNotifBuilder;
// ...
androidx.media.app.NotificationCompat.MediaStyle ms =
new androidx.media.app.NotificationCompat.MediaStyle();
ms.setMediaSession(mSession.getSessionToken());
myNotifBuilder.setStyle(ms)
.addAction(new NotificationCompat.Action(R.drawable.clipboard_speak,
"Paste", pIntent5))
.addAction(new NotificationCompat.Action(R.drawable.fb_on,
"Floating button", pIntent7));
// ...
myNotifBuilder.build();
生成的通知包含操作按钮,但前提是未调用 mSession.setPlaybackState(state)。调用此代码后:
PlaybackStateCompat state = new PlaybackStateCompat.Builder()
.setState(isTalking() ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED,
progress * 1000, 1f)
.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE
| PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS
)
try {
mSession.setPlaybackState(state);
} catch (Exception ex) {
ex.printStackTrace();
}
使用 NotificationCompat.Builder() 添加的操作按钮将消失,取而代之的是ACTION_SKIP_TO_NEXT按钮、全宽进度条和ACTION_SKIP_TO_NEXT按钮。
现在,我知道我可以在 PlaybackStateCompat state.addCustomAction() 上添加按钮。但是,在这些按钮上,不能设置挂起的意图,就像通知生成器的 .addAction() 调用一样。这两个按钮都需要隐藏通知阴影面板并打开我的主要活动。如果我在自定义操作按钮回调中从我的应用代码正常启动 Activity,则 Activity 可能会打开,但通知面板不会消失,关键是它打开了,并让用户立即与 Activity 交互。
另一种选择似乎是永远不要所有的 mSession.setPlaybackState(state);,然后从通知生成器中使用 .addAction() 添加的按钮执行所有操作。但是没有办法显示进度条——它根本不出现在 Android 13 上,一些进度条出现在 Android 14 上的按钮左侧,但没有办法更新进度。这是一个编码死胡同......
更新:还将其作为错误报告提交给 Android 问题跟踪器:https://issuetracker.google.com/issues/309068092
答: 暂无答案
评论