2011-07-14 17 views
9

ben yöntem onCreate(...) bir IntentFilter ile BroadcastReceiver yaratan bir Aktivite vardır:Sadece belirli bir etkinliğe yayın gönder

Intent intent = new Intent(getApplicationContext(), receiver.class); 
intent.setAction("action"); 

[...] 

sendBroadcast(intent); 
:

IntentFilter iFilter = new IntentFilter("action"); 

receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

    } 
}; 

registerReceiver(receiver, iFilter); 

Diğer taraftan bazı verileri göndermek zorundadır bir IntentService olduğu

Ama işe yaramaz gibi görünüyor. No Yayını ist alındı.
Hizmet sınıfım bir android lib var, belki de bu sorun çıkarır.

Her türlü tavsiyeniz için teşekkürler.

+0

kullanmayı düşünün. Neden işe yaramadığını düşünüyorsun? Kütüphane projenize ana projenizde referans gösterdiğiniz sürece, bir kütüphane projesinde olup olmadığı önemli değil. –

+1

Bunu düşünmüyorum. Test ederken farkettim. – CSchulz

+0

OnRecieve yönteminde bir şey kaydedin veya yazdırın. Logcat ne diyor? –

cevap

10

Sadece eyleminizle amaç oluşturun.

Intent intent = new Intent("action"); 
[...] 
sendBroadcast(intent); 

Ve "com.my.package.actions.SOME_ACTION" gibi daha anlamlı bir "eylem" adlandırma düşünün.

yalnızca uygulama bileşenleri daha sonra yayını alan kullanmanızı isterseniz:

  1. bir signature koruma seviyesi ile sizin Manifest bir izni Kayıt (ve bu izin bir kullanım-iznini tanımlar). Diğer here.
  2. Kullanım sendBroadcast(intent, permission) ve amacı, yalnızca uygulamanızın içinde ise 1.
+0

Daha anlamlı bir isim var. ;) Bu şekilde kullandığımda herkes * Yayın * seçeneğini ve engellemek istediğimi alabilir. – CSchulz

+0

Bu bir yayın etkinliği fikri. Herkese göre ne demek istiyorsun? Etkinlikleriniz yaşam döngüsünde bir yerde dinlemeyi bırakmalı, muhtemelen onPause yönteminde. – aromero

+0

Demek istediğim * Yayın * Farklı Etkinlikler ile sadece kendi başıma değil, değil mi? – CSchulz