Yeni PendingIntent akım niyet günceller

oy
6

ben bazı zaman aralığından sonra farklı bildirimler göstermeye çalışıyor ama ne olduğunu olmuyor akım günceller am PendingIntenti 4 yangın bile ben sadece tek bildirim almak sonucunda yenisi ile - 5 beklemede Intents'in istekleri

Açık düğmesi i aşağıdaki şey yapmak tıklayın

 try{
                 adapter.OpenDB();
             int id = adapter.getMaxId(reminder)+1;
             adapter.CloseDB();
             Intent intent = new Intent(MilestonesActivity.this, AlarmReceiver.class);
             intent.putExtra(message, +editMsg.getText()+ +editDate.getText());               
             intent.putExtra(id, id);
              PendingIntent pendingIntent = PendingIntent.getBroadcast(MilestonesActivity.this, 0,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);
                am.set(AlarmManager.RTC_WAKEUP,
                reminddate.getTimeInMillis(), pendingIntent);

             adapter.CloseDB();
             }catch (Exception e) {
                // TODO: handle exception
            }

AlarmReceiver.java

 @Override
 public void onReceive(Context context, Intent intent) {

     Intent i =new Intent(context, NotificationService.class);

     try{

     int id = intent.getExtras().getInt(id);
        i.putExtra(id, id);
     CharSequence message = intent.getExtras().getString(message);
        i.putExtra(message, message);
     }catch (Exception e) {
        // TODO: handle exception
    }
     context.startService(i);

 }

NotificationService.java

 public void  show(Intent intent) {
 try{
        NotificationManager nm;
         Log.e(recieve, ok);
      nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
      CharSequence from = Lawyer app Reminder;
      CharSequence message = intent.getExtras().getString(message);
      PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(), 
                PendingIntent.FLAG_ONE_SHOT);// also tried FLAG_UPDATE_CURRENT
      int id =intent.getExtras().getInt(id);
      Log.e(I, +id);
      Notification notif = new Notification(R.drawable.message_active,
        Lawyer app Reminder., System.currentTimeMillis());
      notif.defaults = Notification.DEFAULT_ALL;
      notif.flags = Notification.FLAG_AUTO_CANCEL;

      notif.setLatestEventInfo(this, from, message, contentIntent);
      nm.notify(id, notif);

 }catch (Exception e) {         
     e.printStackTrace();            
}

Bu önceden .thanks ile plaese bana yardım

Oluştur 14/03/2012 saat 08:59
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
3

Id in değeri ise nm.notify(id, notif);aynıdır sonra Bildirim üzerine yazılır.

Yani kimliği farklı Bildirim için farklı olduğundan emin olmak gerekir

Cevap 14/03/2012 saat 09:13
kaynak kullanıcı

oy
31

buldum

pendingintent yapıcının ikinci parametre aynı olmamalıdır (0 sabit kodlanmış olan)

i aynı :) olmamalıdır ki) ((int) System.currentTimeMillis için değiştirildi

Intent ni =new Intent(NotificationService.this,ModifyDatabaseService.class);
        ni.putExtra("id", ""+id);
        PendingIntent contentIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), ni, 
                PendingIntent.FLAG_ONE_SHOT);
Cevap 09/05/2012 saat 12:04
kaynak kullanıcı

oy
1

Senin durumunda ise ikinci PendingIntentonu değiştirir, bir öncekine "eşit" dir.

Aşağıdaki tümü aynı olup olmadığını PendingIntents eşittir:

  1. requestCode (fabrika yönteme geçirilen ikinci parametre)
  2. Tüm Intent'in verileri (tip, URI, category..etc)

Yani, ikinci istemiyorsanız PendingIntent, önceki geçersiz Yukarıdaki listeye birini değiştirmek için.

Cevap 12/01/2016 saat 15:54
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more