2016-08-23 108 views
0

我需要關閉一個特定的通知,我點擊它的按鈕。問題是如何知道notification_id知道哪個關閉。這是我的代碼:關閉特定通知android

intent.setAction("eliminar"); 
    bundle = new Bundle(); 
    bundle.putInt("respuesta", 1); 
    intent.putExtras(bundle);  


pIntent = PendingIntent.getBroadcast(getApplicationContext(), (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT); 

       n = new Notification.Builder(getApplicationContext()) 
         .setContentTitle("Recordar") 
         .setStyle(new Notification.BigTextStyle().bigText(nota.getText())) 
         .setSmallIcon(R.drawable.ic_icono) 
         .setContentIntent(pIntent) 
         .setColor(Color.parseColor("#4CAF50")) 
         .setOngoing(true) //notificacion persistente 
         .addAction(R.drawable.ic_borrar, "Quitar nota", pIntent).build(); 


       notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

       notificationManager.notify(cpos, n); 

CPOS是每一個通知

+0

如果你提出的通知,你應該知道你所使用的ID。如果您問如何清除其他應用程序的通知,謝天謝地,您不能那樣做。 –

+0

說:「我需要關閉一個特定的通知,我點擊它的按鈕」,你有屏幕上的按鈕或通知本身? – DsD

+0

關於通知本身我有按鈕 –

回答

1

正如你所提到的ID:

CPOS是每一個通知的ID。

以上聲明是錯誤的。每個通知都有其自己的唯一標識符,作爲該通知的標識符。

您可以使用notificationManager.cancel(cpos);清除狀態欄中的通知。

您可以創建一個按鈕,該按鈕的點擊,你可以撥打:

notificationManager.cancel(cpos);

關閉您的通知。

+0

是的,但我如何知道該ID是否是要關閉的通知? –

+0

你自己正在創建通知書寫?因此您可以使用整數數組來設置notificationManager的ID,因此您可以取消所需的通知。 –

+0

我對每個通知的文本都有一個sharedpreferences,通知的id是sharedpreferences中每個文本的id。我的問題是,不知道如何得到正確的編號 –

0

如果您想獲得點擊通知的ID, 請嘗試this回答。

如果你想顯示多個通知,使用: -

說你已經創建了2個通知。 確保您爲每個通知提供了不同的預定義的 ID。

例如。

通知1:

notificationManager.notify(1, n1); 

通知2:

notificationManager.notify(2, n2); 

在按鈕點擊:

如果條件匹配條件1

notificationManager.cancel(1); 

如果條件滿足CONDITION2

notificationManager.cancel(2); 
+0

也許我應該把我的代碼的一部分cpos增量,當我創建一個新的通知。我有一個sharepreferences中的每個ID,但我不知道如何獲得正確的ID來知道我必須關閉哪個通知。那是我的問題,如何知道正確的ID –