Одна из функций моего приложения отправляет данные через Интернет. Перед тем, как отправить данные, проверить, существует ли связь:Создание андроидального AVD без 3G-соединения
private boolean isConnected() {
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo.State val1 = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
NetworkInfo.State val2 = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
return NetworkInfo.State.CONNECTED.equals(val1) || NetworkInfo.State.CONNECTED.equals(val2);
}
Это работало прекрасно на эмуляторе и несколько реальных устройств я тестировал на. Затем я получил сообщение об ошибке от клиента, которое по расследованию оказалось NullPointerException
на линии getState
для TYPE_MOBILE
.
По-видимому, connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
вернулся null
на устройство, у которого не было 3G (планшет WiFi). Хотя я тестировал эмулятор Nexus 7, я не получил эту ошибку.
Следовательно, меня интересует создание AVD, который явно не имеет 3G (т. Е. AVD для устройства WiFi), чтобы я мог исследовать/тестировать такие сценарии. Я ничего не нашел в настройках эмулятора, но, возможно, я просто искал не то место. Возможно ли это?
Я попытался отключить данные 3G - это имитирует выключение 3G-данных в телефоне, а информация о подключении не равна нулю, вместо этого его getState возвращает DISCONNECTED. Понятно, что это не то, что мне нужно. –
Я даже не могу найти, где удалить hw.gsmModem. Последняя версия менеджера ADV не дает мне этих параметров. Я полагаю, я мог бы выследить xml для avd, но отключить все данные ячеек не вариант для меня. Наверное, я просто добавлю проверки на нули. –
Я немного обновил свой менеджер AVD, но вам не нужно менять параметры в любом случае. Отредактировано с инструкциями. – Geobits