多行动通知

时间:2016-07-21 01:03:12

标签: android notifications android-pendingintent

我有这个代码来执行操作:

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

有人可以帮助我吗?

编辑:

通过使用随机请求代码解决了广播问题,还添加了标志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);

0 个答案:

没有答案