丰富的通知操作无法点击

时间:2013-02-09 16:58:03

标签: android notifications

我正在使用Jelly Bean丰富的通知系统,我在我的通知中添加了两个操作。我遇到的问题似乎是禁用了行动。

我们的想法是为每个操作设置一个PendingIntent,并在我注册的BroadcastReceiver中收到通知,以处理两个意图中的操作。

以下是创建通知的代码:

        Intent startIntent = new Intent(Notifications.START);
        Intent resetIntent = new Intent(Notifications.RESET);

        PendingIntent startPendingIntent = PendingIntent.getBroadcast(ctx,
                whichOne, startIntent,
                Intent.FLAG_RECEIVER_REPLACE_PENDING);
        PendingIntent resetPendingIntent = PendingIntent.getBroadcast(ctx,
                whichOne, resetIntent,
                Intent.FLAG_RECEIVER_REPLACE_PENDING);

        [...]

        notificationBuilder = new Notification.Builder(ctx)
                .setContentTitle(s)
                .setContentText("")
                .setContentIntent(appIntent)
                .setSmallIcon(R.drawable.ic_launcher)

                .addAction(R.drawable.play,
                        ctx.getString(R.string.START), startPendingIntent)
                .addAction(R.drawable.reload,
                        ctx.getString(R.string.RESET_TIMER),
                        resetPendingIntent);
        [...]

然后我像这样注册Receiver

IntentFilter filter = new IntentFilter();
    filter.addAction(Notifications.START);
    filter.addAction(Notifications.RESET);

    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, intent.getAction(), Toast.LENGTH_LONG)
                    .show();

        }
    };

    registerReceiver(receiver, filter);

我遇到的问题是似乎禁用了操作。我无法点击它们,它们会以典型的禁用Alpha文本颜色显示。

1 个答案:

答案 0 :(得分:0)

您应该从Intent.FLAG_RECEIVER_REPLACE_PENDING删除PendingIntent这两个操作的标记,并将其替换为0. That flag is most commonly used with sticky broadcasts,其中最新值是唯一重要的值(例如,检查电池电量) )。

删除该标志将重新启用您的操作。如果您的意图是在任何给定时间只提供一个操作,那么我建议为该通知使用静态ID,以便在任何给定时间只能使用该类型的一个通知。