2012-06-07 18 views
9

Yayın alıcısını bildirmeye başlamak mümkün mü?android Bildirimde TIKLAYINIZ BroadcastReceiver's onReceive

Bu kodu denedim ancak çalışmaz.

Bildirim oluşturuldu ama üzerine tıkladığımda hiçbir şey olmuyor.

NOT: MyBroadcastReceiver.class öğesinden bir etkinliğe (MainActivity.class gibi) işaret etmek için notificationIntent'i değiştirdiğimde, düzgün çalışıyor.

Bildirim oluşturma: Burada

NotificationManager notificationManager = (NotificationManager) context.getSystemService(
     Context.NOTIFICATION_SERVICE); 

    int notificationIconId = XXXXXX 
    Notification notification = new Notification(
     notificationIconId, 
     XXXXXX, 
     System.currentTimeMillis() 
    ); 

    CharSequence contentTitle = XXXXXXX 
    CharSequence contentText = XXXXXX 

    Intent notificationIntent = new Intent(context,MyBroadcastReceiver.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
    notificationManager.notify(1,notification); 

...

public static class MyBroadcastReceiver extends BroadcastReceiver { 

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

} 
} 

İçinde AndroidManifest.xml Kodunuzdaki itibaren

<receiver android:name=".MyBroadcastReceiver" /> 

cevap

31

BroadcastReceiver olduğunu

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 

BroadcastReceiver'u hedefleyen bir PendingIntent oluştururken, getBroadcast(...) ve getActivity(...) kullanmanız gerekir.

oluşturmaz, aynı zamanda

PendingIntent.getBroadcast(Context context, int requestCode, Intent intent, int flags) etkinliğinizi görün böyle Intent ...

(genellikle belirli Activity sınıfını başlatmak için kullanılır) belirli bir sınıfı hedef alan açık bir Intent olduğunu
Intent notificationIntent = new Intent(context,MyBroadcastReceiver.class); 

.

yerine

Intent notificationIntent = new Intent(MyApp.ACTION_DO_SOMETHING); 

Ayrıca manifestin <receiver android:name=".MyBroadcastReceiver" /> bölümü için bir <intent-filter> bölüm belirtmek gerekir ... gibi bir 'eylem' olan bir Intent 'yayın' oluşturun.

+1

@Abhishek: Sorun değil. İlk kez bildirimlerle çalıştım, aslında bir 'Hizmet '(' getService' kullanan)' i başlatmak istediğimde 'PendingIntent' için' getActivity' kullanarak aynı tuzağa düştüm. Bir ders iyi öğrenildi. :) – Squonk

+3

@Abhishek bildirimi için setClass'dan bahsetmeyi unutmuşsunuzdur ;; notificationIntent.setClass (context, MyBroadcastReceiver.class); – AbdullahDiaa

İlgili konular