单击事件不能处理单元通知

时间:2016-03-01 19:45:14

标签: android android-notifications

单击抬头通知的AcceptReject按钮时,没有任何操作。

但是,当抬头通知消失,点击Accept并且通知面板中的Reject正在运行时。

在Android 5.1.0上进行测试。

Intent acceptIntent = new Intent(this, NotificationReceiver.class);
acceptIntent.setAction("com.android.test.Accept");
PendingIntent acceptPendingIntent = PendingIntent.getBroadcast(TestApplication.getAppContext(), 12345, acceptIntent, PendingIntent.FLAG_CANCEL_CURRENT);

Intent rejectIntent = new Intent(this, NotificationReceiver.class);
rejectIntent.setAction("com.android.test.Reject");
PendingIntent rejectPendingIntent = PendingIntent.getBroadcast(TestApplication.getAppContext(), 12345, rejectIntent, PendingIntent.FLAG_CANCEL_CURRENT);


NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.fundu);
builder.setContentTitle("Test Notification");
builder.setContentText("Hello");
builder.setAutoCancel(true);
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
builder.setCategory(NotificationCompat.CATEGORY_SERVICE);
builder.setDefaults(NotificationCompat.DEFAULT_ALL);
builder.setPriority(NotificationCompat.PRIORITY_MAX);
builder.addAction(R.drawable.ic_check_icon, "Accept", acceptPendingIntent);
builder.addAction(R.drawable.ic_action_close, "Reject", rejectPendingIntent);

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, builder.build());

2 个答案:

答案 0 :(得分:1)

只需设置振动,即可正常工作。

builder.setVibrate(new long[0]);

答案 1 :(得分:0)

关键是在通知生成器上调用 setContentIntent 并将其传递给 PendingIntent。下面包含带有解释每个步骤的注释的完整代码。请参阅名为“这是相关部分”的部分(为了完整起见,包含完整代码。)

// Use Notification Builder to start things off
// There are other ways of acquiring a Notification Builder; this is just an example
String channelId = "channelId";
String title = "title";
String body = "body";
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, channelId);
notificationBuilder
        .setSmallIcon(R.drawable.ic_alarm)
        .setContentTitle(title)
        .setContentText(body);


//--------------- THIS IS THE PERTINENT PART ---------------
// Prepare Intent for creating PendingIntent
Intent intent = new Intent(context, ActivityToStart.class);

// Create Pending Intent
int requestCode= 1234;    // requestCode has to be a unique ID for EACH PendingIntent
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addNextIntent(intent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(
        requestCode,
        PendingIntent.FLAG_UPDATE_CURRENT    // use to prevent re-using current Activity Intent
);
notificationBuilder.setContentIntent(pendingIntent);

// Finally, create the Notification
Notification notification = notificationBuilder.build();