7

通知に 2 つのアクション ボタンを追加しています。いずれかをクリックすると、目的のアクションが実行されますが、通知は通知ドロワーに残ります。アクションボタンがクリックされたときに通知ドロワーから通知を削除できることはわかっています。これがGmailの機能です。メインの通知をクリックすると、アプリが開き、通知ドロワーから通知が削除されます。

ここに私のコードのスニペットがあります:

Intent completeIntent = new Intent(getApplicationContext(), MarkComplete.class);
        completeIntent.putExtra("rowid", inrowid);
        completeIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

PendingIntent markCompleteIntent = PendingIntent.getActivity(getApplicationContext(), inrow, completeIntent, PendingIntent.FLAG_UPDATE_CURRENT);

builder.setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("Title")
                .setContentText("text")
                .setContentIntent(notificationReleaseIntent)
                .setPriority(Notification.PRIORITY_HIGH)
                .setAutoCancel(true)
                .addAction(R.drawable.complete, "Mark Complete", markCompleteIntent);

編集 - zionpi が指摘したように、notification.cancel(); を呼び出す必要がありました。addAction ボタンがクリックされたら、通知を削除します。このメソッドを、PendingIntent が指しているクラスに追加しただけです。

public static void CancelNotification(Context ctx, int notifyId) {
    String  s = Context.NOTIFICATION_SERVICE;
    NotificationManager mNM = (NotificationManager) ctx.getSystemService(s);
    mNM.cancel(notifyId);
}
4

1 に答える 1