Android: ошибка получения BroadcastListner

В моем приложении я постоянно проверяю подключение к Интернету. Если в любой момент времени нет Интернета, пользователь получает всплывающее сообщение.

Для этого я создаю класс NetworkStateReceiver, который расширяет класс BroadcastReceiver.

Java-файл:

public class NetworkStateReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent); // Here I'm getting the error mentioned below
        Log.d("app", "Network connectivity change");
        if (intent.getExtras() != null) {
            NetworkInfo ni = (NetworkInfo) intent.getExtras().get(
                    ConnectivityManager.EXTRA_NETWORK_INFO);
            if (ni != null && ni.getState() == NetworkInfo.State.CONNECTED) {
                Log.i("app", "Network " + ni.getTypeName() + " connected");
            }
        }
        if (intent.getExtras().getBoolean(
                ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) {
            Log.d("app", "There's no network connectivity");
        }
    }
}

Ошибка:

Невозможно напрямую вызвать абстрактный метод onReceive(Context, Intent) для типа BroadcastReceiver.

Это то, что я поместил в свой файл манифеста Android внутри приложения:

<application>    
    ....
    <receiver android:name=".NetworkStateReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
    ....
</application>

Это разрешение, которое я использовал:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 

Почему я получаю эту ошибку в super.onReceive(context, intent); и как от нее избавиться?


person Punjan Sudhar    schedule 07.04.2013    source источник
comment
Вы не сказали нам об ошибке, которую вы получаете. Опубликуйте трассировку стека из вашего Logcat, если ваша программа дает сбой, или сообщите нам, какое поведение вы наблюдаете по сравнению с тем, что вы ожидаете.   -  person Karakuri    schedule 07.04.2013
comment
@Karakuri это не ошибка времени выполнения, это ошибка, которую я получаю в строке, в которой super.onReceive(context,intent); пишется в java файле.   -  person Punjan Sudhar    schedule 07.04.2013
comment
@Karakuri Нет, это не работает. Я не могу просмотреть вывод файла журнала при изменении состояния подключения.   -  person Punjan Sudhar    schedule 07.04.2013


Ответы (1)


Удалите строку super.onReceive(context, intent). Базовая реализация все равно ничего не делает (это абстрактный метод).

person Karakuri    schedule 07.04.2013