Приложение проверяет подключение к сети при запуске. В версиях Android версии 2.3 - 4.4 этот метод работает отлично (будь то эмулятор или фактическое устройство). В эмуляторе предварительного просмотра Android L метод возвращается с ошибкой.ConnectivityManager в Android L Preview
Вот мой код:
// ===============================================================
public static boolean haveNetworkConnection(Context ctx) {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
boolean haveConnectedEthernet = false;
ConnectivityManager cm = (ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
// String con = ni.isConnected() ? "Connected" : "Not Connected";
if (!haveConnectedWifi) {
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
}
if (!haveConnectedMobile) {
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
if (!haveConnectedEthernet) {
if (ni.getTypeName().equalsIgnoreCase("ETHERNET"))
if (ni.isConnected())
haveConnectedEthernet = true;
}
StringBuilder sb = new StringBuilder();
sb.append(ni.getTypeName()).append(" ").append(ni);
}
return haveConnectedWifi || haveConnectedMobile
|| haveConnectedEthernet;
}
Существует несколько странно StringBuilder
материал, я не создавал этот код - это в проекте я унаследовал. Мне не нужно ничего менять с тех пор, как он работает. Кто-нибудь знает, есть ли какие-либо изменения API с тем, как работает ConnectivityManager
? Я проверил изменения API overview на dev site, но не видел никакой соответствующей информации об этом.
Что такое sb здесь? –
@niteshgoel Это для журнала, который был отредактирован. – KickingLettuce
Для имен типов нет стабильного API. Начните с изменения этого параметра, чтобы использовать NetworkInfo.getType() и проверяя константы ConnectivityManager.TYPE_ *. – alanv