2012-08-10 12 views
5

W kilku sieciach reklamowych z Androidem zobaczyłem, że deklarują one BroadcastReceiver bez filtrów intencyjnych. Coś w tym stylu:Android BroadcastReceiver bez filtrów intencji

<receiver android:name="com.example.SampleReceiver" /> 

Zgaduję, że taki odbiornik przechwyciłby wszystkie możliwe zdarzenia. Więc próbowałem robić to sam i stworzył SampleReceiver:

public class SampleReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     System.out.println("Event captured: " + intent.getAction()); 
    } 
} 

Mam uruchomiła aplikację, próbował odpalić kilka zdarzeń, wykonując różne działania na moim telefonie i zauważył, że onReceive() nie nazywano jeszcze raz.

Pytanie brzmi - w jaki sposób działa program BroadcastReceiver bez filtrów intencyjnych? Może wymaga to tworzenia filtrów intencji za pomocą kodu? Jeśli tak to jak? Jeśli nie, to dlaczego nie otrzymuje żadnych zdarzeń? Co tu się dzieje?

+0

Masz wielką ocena zapisu teraz :) – Jin35

Odpowiedz

0

myślę, że następujące pytanie/odpowiedź powinna dać kilka wskazówek:

Create an IntentFilter in android that matches ALL intents

+0

To sugeruje, że takie BroadcastReceiver nie otrzyma wszystkie zdarzenia . Ale wciąż pozostaje pytanie: co robi taki odbiorca? Dzięki i tak. –

+0

Podejrzewam, że ustawili filtr intencji z kodu, którego nie widzisz. – wojciii

+0

Ale nadal nie odpowiada, jak to robią :) –

5

Jeśli nie masz jakieś zamiarom filtry, jedynym sposobem, aby otrzymać coś jest wywołanie odbiornik wyraźnie. to będzie wyglądać następująco:

context.sendBroadcast(new Intent(context, MyBroadcastReceiverClass.class)); 

Kolejny facet już odpowiedział na to pytanie w następujący post: https://stackoverflow.com/questions/10051256/broadcast-receiver-not-receiving

+0

Jeśli chcesz przetestować go za pomocą wiersza poleceń, możesz uruchomić 'adb shell am -n com.example/.SampleReceiver' – Jamby

Powiązane problemy