7

android bildirimi tıklatıldığında aynı verileri gönderme. Temayı yükledikten sonra bildirim gönderiyorum. 4 tema yüklediğimi ve Bildirim penceresinde 4 bildirimin gözüktüğünü düşünün, ancak her bildirime tıkladığımda, bu özellik, etkinlik amacı ile başlatılacak, ancak amaç, her bir amaç için aynı verilere sahip olacaktır.Android Çoklu Bildirimi, tıklatıldığında aynı amacı alarak

benim kod bu

@SuppressWarnings("deprecation") 
void sendInstalledNotification(String fileName, String packageName) { 
    NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); 

    String name = ""; 
    try { 
     name += fileName.substring(fileName.lastIndexOf(".") + 1); 
    } catch (Exception e) { 
     Log.e("NewThemeChooser", "Invalid Package name"); 
     e.printStackTrace(); 
    } 
    name += " Installed"; 
    Notification notification = new Notification(R.drawable.ic_launcher_9, name , System.currentTimeMillis()); 

    Intent intent = new Intent(mContext , ThemeInfo.class); 
    Bundle bundle = new Bundle(); 
    bundle.putString("apkid", packageName); 
    bundle.putBoolean("isApplied", false); 
    intent.putExtra("bundle", bundle); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0); 
    notification.setLatestEventInfo(mContext, name, "Click to Apply Theme", pendingIntent); 
    notification.flags = Notification.FLAG_AUTO_CANCEL; 
    Log.d("NewThemeChooser__:ThemeChangeReceiver" , "hascode : " + packageName.hashCode() + " installed " + packageName); 
    notificationManager.notify(packageName.hashCode(), notification); 

} 

gibi gider ve ben günlüklerinde alıyorum sonuç

D/NewThemeChooser__:ThemeChangeReceiver(4423): hascode : -186637114 installed com.test.theme.MiCrease 
D/NewThemeChooser__:ThemeChangeReceiver(4423): hascode : 2106806482 installed com.test.theme.iPhone 
D/NewThemeChooser__:ThemeChangeReceiver(4423): hascode : -1413669305 installed com.test.theme.Simpsons 
D/NewThemeChooser__:ThemeChangeReceiver(4423): hascode : -2146296452 installed com.test.theme.AnnaTheme 
I/System.out(4423): NewThemeChooser__:bundle apkid com.test.theme.MiCrease 
I/System.out(4423): NewThemeChooser__:bundle apkid com.test.theme.MiCrease 
I/System.out(4423): NewThemeChooser__:bundle apkid com.test.theme.MiCrease 
I/System.out(4423): NewThemeChooser__:bundle apkid com.test.theme.MiCrease 

cevap

18

olduğunu

Bundle bundle = getIntent().getBundleExtra("bundle"); 
    apkid = bundle.getString("apkid"); 
    isApplied = bundle.getBoolean("isApplied", false); 

    System.out.println("NewThemeChooser__:bundle apkid " + apkid); 

olarak THEMEINFO aktivitenin onCreate içinde eğilim verileri basmak Aynı sorunu yaşadım ve sorun şu ki Android biraz akıllı ve size aynı şeyi veriyor. Yeni olanlar yerine PendingIntent s. docs Gönderen:

İnsanların yaptığı ortak bir hata farklı PendingIntent her saati almak için bekliyor, multipl sadece kendi "ekstra" içindekiler değişir Intent s ile PendingIntent nesneler yaratmaktır. Bu gerçekleşmez. Eşleştirme için kullanılan Intent'un bölümleri Intent.filterEquals tarafından tanımlananlarla aynıdır. Intent.filterEquals'a eşdeğer iki Intent nesnesi kullanırsanız, her ikisi için de aynı PendingIntent değerini alırsınız. benzersiz requestCode tedarik aşağıdaki gibi

kodunuzu değiştirin:

// ... 
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, packageName.hashCode(), intent, 0); 
// ... 

Bu aynı bir karşıt olarak benzersiz PendingIntent kullanılır sağlayacaktır.

hashCode()'un benzersiz olmayabileceğini unutmayın, bu nedenle requestCode olarak başka bir benzersiz tamsayı kullanın.

+1

Aslında bu düzeltmeyi yalnızca daha önce aldım ancak güncelleştirmedim. teşekkürler @Oleg –

+0

Vay. güzel yakalama + 1 Upvote. paylaşım için teşekkürler –