2013-05-31 21 views
10

通知を1回以上表示する必要があるアプリケーションを作成しています。私は、情報を探していたと私はクラスでこのコードを使用:複数の通知が表示され、最初の通知のみが表示されます。

Notification noti = new NotificationCompat.Builder(this) 

私はバーの上に複数の通知を表示することができますが、問題は、私はそれをクリックしたときにのみ、最初のものを示すことです。保留中の意図が取得するIDは常に同じですが、別のIDを送信するためです。

通知活動:ボタンをクリックすると、新しい通知が表示されます。

import android.app.Activity; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.NotificationCompat; 
import android.util.Log; 
import android.view.View; 

public class NotificationActivity extends Activity { 
int notificationID = 1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_notification_example); 
} 

public void onClick(View v){ 
    displayNotification(); 
} 

protected void displayNotification(){ 
    Intent i = new Intent(this, NotificationView.class); 
    i.putExtra("notificationID", notificationID); 

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, i, 0); 
    NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 

    CharSequence ticker ="Display"; 
    CharSequence contentTitle = "Title"; 
    CharSequence contentText = "Description"; 
    Notification noti = new NotificationCompat.Builder(this) 
         .setContentIntent(pendingIntent) 
         .setTicker(ticker) 
         .setContentTitle(contentTitle) 
         .setContentText(contentText) 
         .setSmallIcon(R.drawable.ic_launcher) 
         .addAction(R.drawable.ic_launcher, ticker, pendingIntent) 
         .setVibrate(new long[] {100, 250, 100, 500}) 
         .build(); 
    Log.d("Send Notification", "id: "+notificationID); 
    nm.notify(notificationID, noti); 
    notificationID++; 
} 
} 

ご覧のとおり、別のIDを送信するためにボタンをクリックするたびに通知IDを増やすことができます。

通知表示:通知のIDを表示します。

import android.app.Activity; 
import android.app.NotificationManager; 
import android.os.Bundle; 
import android.widget.TextView; 

public class NotificationView extends Activity { 
TextView txt; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.notification); 
    txt= (TextView) findViewById(R.id.txt1); 
    NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

    txt.setText("Notification ID: "+getIntent().getExtras().getInt("notificationID")); 
    // Cancel notification 
    nm.cancel(getIntent().getExtras().getInt("notificationID"));   
} 
} 

ここだけは、通知のIDを示していますが、それは常に1

起こったかについての任意のアイデアですか? 2.3デバイスでテストしています。

ありがとうございます。

答えて

16
1) PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, i, 0); 
    ..............Your code ........................ 
    nm.notify(1, noti); 
2)PendingIntent pendingIntent2 = PendingIntent.getActivity(this, 2, i, 0); 
    ..............Your code ........................ 
    nm2.notify(2, noti); 
3)PendingIntent pendingIntent3 = PendingIntent.getActivity(this, 3, i, 0); 
    ..............Your code ........................ 
    nm3.notify(3, noti); 
4)................same as above 
5)................same as above 
+1

あなたがそれをしてください説明できますか?私はあなたが私に言っていることを理解していない。 --------------------- これは正常に動作します:)ありがとうございます。 – Fernando

+0

このコードは異なる別の通知を作成しますが、上書きはできません。 – AnilPatel

+1

は、基本的に各保留中に一意の番号を付けます。その番号をnotify()で使用した後、次の通知のためにそれをインクリメントします。 –

11

だけで問題を解決するために置か:

int num = (int) System.currentTimeMillis(); 

PendingIntent resultPendingIntent=PendingIntent.getActivity(this,num,resultIntent,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

mNotificationManager.notify(num, mNotifyBuilder.build());* 
+0

すばらしい答え、いい仕事です! –

関連する問題