2011-05-14 4 views
0

У меня есть следующий класс деятельности:Android: Как создать вещательный приемник в качестве внутреннего класса деятельности

public class Main extends TabActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    public class LocationUpdateReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "broadcast received", Toast.LENGTH_LONG).show(); 
     Log.e("ADNAN", "received"); 
    } 

    } 

} 

и после вступления в моем файле манифеста:

<receiver android:name=".LocationUpdateReceiver" android:enabled="true"/> 

и я использую следующий код для отправки трансляции в мой класс:

Intent intent = new Intent(this,LocationUpdateReceiver.class); 
     sendBroadcast(intent); 

, но приемник не получает трансляцию. Однако, если я возьму свой класс приемника в свой собственный файл, а затем LocationUpdateReceiver.java, он будет работать, как ожидалось. Что я здесь делаю неправильно? мне нужно указать мой приемник по-другому в моем файле манифеста? Как создать широковещательный приемник как внутренний класс?

ответ

1

Если вы хотите, чтобы это было как участник мероприятия, вы должны зарегистрировать его в некоторых обратных вызовах (onCreate()), например this.

+0

Я не хотел этого делать, но я думаю, что это невозможно по-другому. – binW

+1

При использовании API someones это не о том, что нужно делать. Удачи ;) –

0

Android не найдет «.LocationUpdateReceiver» из файла манифеста, так как его нет (если вы его не создадите, как вы сказали, что сработали).

Не знаю, работает ли оно, но попробуйте использовать «.TabActivity $ LocationUpdateReceiver» вместо этого в файле манифеста. Имена имен внутренних классов относятся к этому способу.