2013-08-20 15 views
7

通知に2つのアクションボタンを追加していますが、いずれかのボタンをクリックすると通知が通知帳に残りますが、希望の動作を実行します。 Gmailがどのように機能しているかのように、アクションボタンがクリックされると、通知ドロワーから通知を削除することが可能です。メインの通知をクリックすると、アプリが開き、通知トレイから通知が削除されます。ここで addActionが呼び出されたときに通知を削除しますか?

は、私のコードの抜粋です:

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); 
} 
+0

コードが不完全です。通知はまだそこに残っていますか? – Nizam

+0

IMO Gmailはサービスを使用して通知オブジェクトへの参照を保持するため、特定の条件に一致すると通知を削除できます。 –

答えて

4

通知を削除するには、暫定通知IDが必要です。
次に、以下のようなメソッドを呼び出してそれを除去します。

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

あなたが交互にthisthisポストを参照することもできます。

+0

シオンピ、完璧に働いてくれてありがとう! – marty331

+0

私のaddActionがMainActivityインテントを開くと仮定すると、MainActivityの開始時にこの 'mNM.cancel(notifyId);を呼び出すと、通知をクリックしたりチェックしたりしなくてもMainActivityを開くと常に通知がキャンセルされます。では、addActionボタンをクリックした後でのみ呼び出されるようにする必要があります。 @zionpi – Sp4Rx

+0

通知は、次のいずれかが発生するまで表示されます。[this](https://developer.android.com/training/notify-user/managing.html#Removing)を参照してください。 @ Sp4Rx – zionpi

関連する問題