Android: как создать широковещательный приемник как внутренний класс действия - PullRequest
0 голосов
/ 14 мая 2011

У меня есть следующий класс активности:

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, тогда он будет работать как положено.Что я здесь не так делаю?мне нужно указать мой получатель каким-то другим способом в моем файле манифеста?Как создать вещательный приемник как внутренний класс?

Ответы [ 2 ]

1 голос
/ 14 мая 2011

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

0 голосов
/ 14 мая 2011

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

...