Ссылка на объект NetworkInfo.IsConnected не указывает на экземпляр объекта в xamarin

Я пытаюсь обнаружить подключение к Xamarin Android.

Когда я подключен по Wi-Fi или в роуминге, у меня нет никаких ошибок.

Но когда я не подключен к Интернету, у меня возникает ошибка System.NullReferenceException и сбой приложения.

ConnectivityManager connectivityManager = (ConnectivityManager)GetSystemService(ConnectivityService);
NetworkInfo info = connectivityManager.ActiveNetworkInfo;

bool isOnline = info.IsConnected; //error is here

Обычно логическое значение isConnected должно принимать значение false. Но я не знаю, почему он на нуле.

Как я могу это исправить?


person Samih EL SAKHAWI    schedule 03.07.2018    source источник
comment
если вы не подключены к Интернету, connectionManager.ActiveNetworkInfo, скорее всего, вернет значение null, поэтому попытка доступа к свойству IsConnected нулевого объекта приводит к NullReferenceException, оберните `bool isOnline = info.IsConnected в try catch и catch NullReferenceException или проверьте, не является ли информация == нулевой, прежде чем делать isOnline = info.IsConnected.   -  person Ryan Wilson    schedule 03.07.2018


Ответы (1)


если вы не подключены к Интернету, connectivityManager.ActiveNetworkInfo, скорее всего, вернет null, поэтому попытка доступа к свойству IsConnected нулевого объекта приведет к NullReferenceException

Быстрая починка:

//Use a ternary expression to evaluate whether info equals null, if so set
//bool to false, else use the IsConnected property
bool isOnline = info == null ? false : info.IsConnected;
person Ryan Wilson    schedule 03.07.2018