2011-10-23 17 views
6

Yeni Wifi tarama sonuçları alındığında (Receiver manifest filtresine Scan_Results yayınıyla birlikte kaydediliyor) BroadcastReceiver'ı genişleten bir sınıfım var. Bu sınıfa itibaren Android show bildirimi Gönderen BroadcastReceiver

, ben kullanıcıya bir bildirim göstermek isterler. Şu anda, yayın niyet sınıfımın onReceive yönteminde bir parametre olarak alınan içeriği başka bir sınıfa ait "bildirim bildirimi" yöntemine iletiyorum.

o çizgiye aldığında:

myNotificationManager.notify(notificationId, notification); 

aşağıdaki durumla başarısız:

java.lang.IllegalArgumentException: contentView required: pkg=com.mumfordmedia.trackify id=2131034122 notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x0) 

herhangi bir fikir bu neden oluyor? Tüm düşünebildiğim, onReceive parametresinden aldığım bağlamın, daha iyi bir cümlenin yokluğu için değil, "iş için doğru" olması değil ...

Herhangi bir fikrin var mı? Teşekkürler, Maks.

Sana Bildirim yöneticisine geçmek size bildirim oluştururken, bunu göstermek için bir içerik görünümü vermiyorsun söyleyebileceğim
+1

Belki de bu http://stackoverflow.com/questions/2826786/pendingintents-in-notifications yardımcı olacaktır. Her neyse, bize daha fazla kod göster, böylece yardımcı olabiliriz. – Jong

+2

Lütfen kodunuzdan biraz daha fazlasını bize göstererek neler olup bittiğine dair daha iyi bir fikir edinebiliriz. –

+0

Bu arada, Stackoverflow'a Hoş Geldiniz! Eğer bir yanıt faydalı olursa, oy verin. Yanıt size başarıyla cevap verirse, lütfen cevabı kabul etmek için yanındaki yeşil onay işaretini tıklayın. –

cevap

0

. Bildirimin gerçekten görüntülenip görüntülenmeyeceğini görmek için bildirimi oluşturduğunuz satırı gözden geçirin.

+0

Bildirim komut dosyasını, çalıştığı uygulamanın diğer yerlerinden kopyaladım ve yapıştırdım.Yerleşimi olmayan bir BroadcastReceiver'ı genişleten bir sınıftan etkinleştirildiği için hiçbir içerik görünümü yoktur. Neden bir içerik görünümüne ihtiyaç duyuyor? Birkaç saat içinde belgeleri gözden geçireceğim ... cevap için teşekkürler btw –

2

emin değilim tam olarak neden daha önce çalışan fakat ben burada çalışmak var kodudur wasnt: Aşağıdaki çağrı OnReceive yöntemde Sonra

int YOURAPP_NOTIFICATION_ID = 1234567890; 
NotificationManager mNotificationManager; 

:

herhangi bir yöntemle aşağıdaki dışında beyan :

:

mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
showNotification(context, R.drawable.icon, "short", false); 

Daha sonra aşağıdaki yöntem bildirmek

+0

bu kod benim için çalışır. teşekkürler :) – IRvanFauziE

2

Notification.setLatestEventInfo() öğesini çağırmanız gerekir.

1

kullanın Bildiriminiz

Intent intent = new Intent(this, MusicDroid.class); 
PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0); 
notification.setLatestEventInfo(this, "This is the title", 
    "This is the text", activity); 
notification.number += 1; 

nm.notify(NOTIFY_ID, notification); 
14

contentView ile birlikte bu kod bildirim tıklandığında gereklidir görünümüdür. Aşağıdaki kod düzgün çalışıyor ve setLatestEventInfo() gerekli yöntemdir.

NotificationCompat kullanan olanlar için
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.ic_launcher, 
      "Hello from service", System.currentTimeMillis()); 
    Intent intent = new Intent(this, MainActivity.class); 
    notification.setLatestEventInfo(this, "contentTitle", "contentText", 
      PendingIntent.getActivity(this, 1, intent, 0)); 
    manager.notify(111, notification); 
+1

+1: setLatestEventInfo() kullanarak hataya neden oluyor. Bu kadar basit bir bildirim almak için gereken kod satırının biraz can sıkıcı olması ... – ArtOfWarfare

0

, aşağıdaki kod çalışır:

NotificationCompat.Builder n = new NotificationCompat.Builder(this) 
    .setSmallIcon(R.drawable.icon).setContentText("Notify Title").setContentText("Sample Text"); 
    NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
    Intent i = new Intent(this,MainActivity.class); 
    PendingIntent ac = PendingIntent.getActivity(this, 0, i, 0); 
    n.setContentIntent(ac); 
    nm.notify(12222, n.build());