带有多个操作的通知

9

我有以下代码用于执行操作:

Intent playIntent = new Intent(Intent.ACTION_VIEW);
playIntent.setDataAndType(uri, path.contains(".jpg") ? "image/jpeg" : "video/mp4");
PendingIntent play = PendingIntent.getActivity(context, 1, playIntent, 0);
mBuilder.addAction(R.mipmap.ic_play_arrow_black_48dp, "", play);

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType(path.contains(".jpg") ? "image/jpeg" : "video/mp4");
PendingIntent share = PendingIntent.getActivity(context, 2, shareIntent, 0);
mBuilder.addAction(R.mipmap.ic_share_white_48dp, "", share);

Intent doneIntent = new Intent(context, NotificationCloser.class);
doneIntent.putExtra("notificationId", notificationId);
PendingIntent done = PendingIntent.getBroadcast(context, 3, doneIntent, 0);
mBuilder.addAction(R.mipmap.ic_done_black_48dp, "", done);

这是我的广播接收器。
public class NotificationCloser extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        int id = intent.getIntExtra("notificationId", 0);
        Log.i("MyInfo", "NotificationCloser.onReceive(" + id + ")");
        MainActivity.mNotifyManager.cancel(id);
    }
}

当我点击播放或分享按钮时,它会按照功能打开默认应用程序查看图像或视频,但不会关闭通知。当我点击完成按钮时,仅在第一次接收正确的ID,之后它获取在第一次发送的ID。有人可以帮我吗?
1个回答

0

我通过使用随机请求代码解决了广播问题,还添加了标志PendingIntent.FLAG_UPDATE_CURRENT。我在所有情况下都使用它,因为有时共享会出现故障并使用另一张图片。

PendingIntent play = PendingIntent.getActivity(context, new Random().nextInt(150) * 37, playIntent, 0);
PendingIntent share = PendingIntent.getActivity(context, new Random().nextInt(150) * 37, shareIntent, 0);
PendingIntent done = PendingIntent.getBroadcast(context, new Random().nextInt(150) * 37, doneIntent, PendingIntent.FLAG_UPDATE_CURRENT);

这个答案是由OP Rodrigo Butzke 在CC BY-SA 3.0下发布的,作为编辑问题具有多个操作的通知的回答。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接