2012-07-11 40 views
1

我目前正在嘗試測試我的代碼,以確保正確設置通知。我這樣做的方式是設置3個不同的警報,分別顯示一個通知。但問題是,1有效,但我從來沒有看到其他兩個。我的代碼:您允許進行多少次Android通知?


String ns = Context.NOTIFICATION_SERVICE; 
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns); 

    Notification.Builder builder = new Notification.Builder(context) 
            .setTicker(intent.getStringExtra("event")+"-"+intent.getStringExtra("location")) 
            .setWhen(System.currentTimeMillis()) 
            .setContentTitle(intent.getStringExtra("event")) 
            .setContentText(intent.getStringExtra("time_start")+"-"+intent.getStringExtra("location")) 
            .setSmallIcon(R.drawable.ic_launcher); 
    Notification notification = builder.getNotification(); 
    mNotificationManager.notify(intent.getIntExtra("id", 0),notification); 

的「ID」,也就是在它得到的數字遞增的意圖多餘的,所以像1,2,3,我使用AlarmManager設置報警。我認爲只要notify中的第一個參數是唯一的,它就會顯示通知,但它還沒有。這有什麼理由?提前致謝。

+0

我記得有類似的問題,答案[這裏] [1]可能會有所幫助。 [1]:http://stackoverflow.com/questions/6192569/android-notification-callback – NoBugs 2012-07-11 05:44:42

+0

嗯,我看了看你說的話和醫生,這是有道理我猜! Ima試試吧 – Andy 2012-07-11 05:54:16

+0

仍然沒有工作。我改變了你提到的方式,但我的問題依然存在。 – Andy 2012-07-11 05:58:38

回答

0

由於NoBug在PendingIntent上的點沒有真正重新創建一個新的實例,而只是檢索最後一個實例,所以我發現它不僅僅是說PendingIntent.FLAG_CANCEL_CURRENT。當使用它作爲getBroadcast()getActivity()的參數時,它所做的只是使用舊參數並對其進行刷新。它不是覆蓋舊的實例Intent它通過,它仍然使用它,只是改變額外。但即使如此,它並沒有真正做到出於某種原因所做的事情,至少在我的情況下,目標是讓通知一個接一個地彈出來,而且大多數情況下是相同的額外功能,當然還要減去時間。

所以我發現使用intent.setAction("com.example"+System.currentTimeInMillis)可以完成工作。它所做的是完全區分Intent,所以當你創建一個新的時候,它實際上只是一個不同的動作,而不管PendingIntent。我真的會推薦任何人更加詳細地闡述這個理論,因爲它實際上只是反覆試驗的猜測。