2016-01-27 26 views
0

這是我的MyReceiver.java類,在這裏我寫了一個代碼來顯示單個通知。如何在這裏創建多個通知。如何創建多個通知?

  public class MyReceiver extends BroadcastReceiver{ 
String Reqpopending; 
int MID=0; 
@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 


    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 

    Intent notificationIntent = new Intent(context, SplashScreen.class); 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
      notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 


    Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

    NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
      context).setSmallIcon(R.drawable.dashboard) 
      .setContentTitle("Dash Board Counts") 
      .setContentText("P.O Counts-532,198,654,255,901 ZeroInward-303 PartialInward-777").setSound(alarmSound) 
      .setAutoCancel(true).setWhen(when) 
      .setContentIntent(pendingIntent) 
      .setVibrate(new long[]{1000, 1000, 1000, 1000, 1000}); 
    notificationManager.notify(MID, mNotifyBuilder.build()); 


    MID++; 

} 
+0

這是什麼問題?當onReceive被調用時,是否每個通知都會替換或想要發出多個通知? –

+0

我想在調用這個類時顯示多個通知 – prabhu

+0

我想你每次生成新的通知時都需要爲'MID'設置不同的值,以便有多個通知 – DeltaCap

回答

1

請找這是在循環

public class MyReceiver extends BroadcastReceiver{ 
String Reqpopending; 
int MID=0; 
@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 

    for(int i = 0; i < 3; i++) 
    { 
    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 

    Intent notificationIntent = new Intent(context, SplashScreen.class); 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
      notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 


    Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

    NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
      context).setSmallIcon(R.drawable.dashboard) 
      .setContentTitle("Dash Board Counts") 
      .setContentText("P.O Counts-532,198,654,255,901 ZeroInward-303 PartialInward-777").setSound(alarmSound) 
      .setAutoCancel(true).setWhen(when) 
      .setContentIntent(pendingIntent) 
      .setVibrate(new long[]{1000, 1000, 1000, 1000, 1000}); 
    notificationManager.notify((int)when, mNotifyBuilder.build()); 
    } 

}

希望這有助於中運行下面的代碼。

+0

對不起。你的代碼不工作。 – prabhu

+0

什麼是問題? –

+0

生成靜態計數爲'static int MID = 9999'並將該行更改爲'notificationManager.notify(MID ++,mNotifyBuilder.build());',看看是否有效 –

0
public class NotificationId { 
private final static AtomicInteger c = new AtomicInteger(0); 
    public static int getID() { 
     return c.incrementAndGet(); 
    } 

} 
notificationManager.notify(NotificationId .getID(), mNotifyBuilder.build()); 

的AtomicInteger保證每個你的代碼是正確的時間唯一的整數,但有輕微錯誤的地方,所以它爲多個通知工作。這段代碼適合我,所以你可以試試。

+0

請問你能解釋一下上面的代碼嗎? – prabhu

+0

AtomicInteger每一次ur的代碼是正確的,但小錯誤一些在哪裏,所以它工作多個通知這個代碼是porperly爲我工作,所以你可以嘗試 –

+0

我只能顯示4默認notification.so我應該改變什麼上面的代碼? – prabhu

0
在這行代碼

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
      notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

非要象

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
       notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, 
       notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
PendingIntent pendingIntent = PendingIntent.getActivity(context, 2, 
       notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
PendingIntent pendingIntent = PendingIntent.getActivity(context, 3, 
       notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

不同請求代碼如果確實需要的多個不同的PendingIntent在 對象活性的同時(如使用

因爲兩個通知同時顯示爲 ),那麼您需要確保有一些 與它們不同以將它們與不同的PendingIntents關聯起來。 這可以是任何認爲是意圖屬性的由 {@link Intent#filterEquals(Intent) Intent.filterEquals},或供給到{@link #getActivity}{@link #getActivities}不同 請求碼整數, {@link #getBroadcast},或{@link #getService}

+0

0,1,2,3是指什麼? – prabhu

+0

如果我循環PendingIntent pendingIntent = PendingIntent.getActivity(context,0, notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);它會起作用嗎? – prabhu

+0

你告訴我你只有四個默認通知,通過比較Notifcation中的消息,你會發現通知屬於哪個類別,並相應地設置請求代碼,即在if或switch –