В моем приложении я постоянно проверяю подключение к Интернету. Если в любой момент времени нет Интернета, пользователь получает сообщение с тостом.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");
}
}
}
Ошибка:
Cannot directly invoke the abstract method onReceive(Context, Intent) for the type 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);
, и как я могу избавиться от нее?
Вы не сказали нам об ошибке, которую вы получаете. Отправляйте трассировку стека из вашего Logcat, если ваша программа терпит крах, или сообщите нам, какое поведение вы наблюдаете в сравнении с тем, что вы ожидаете. – Karakuri
@ Karakuri это не ошибка времени выполнения, это ошибка, которую я получаю в строке, в которой super.onReceive (контекст, намерение); написан в java-файле. –
@ Karakuri Нет, он не работает. Я не могу видеть вывод файла журнала при изменении состояния подключения. –