2014-12-07 5 views
0

У меня возникла проблема с моим методом, чтобы проверить, связано ли устройство с данными Wi-Fi или телефоном. На самом деле, он работает очень хорошо на телефонах, но на планшете ... он падает. Причина этого в том, что на некоторых планшетах нет ConnectivityManager.TYPE_MOBILE.Контрольная сеть для двух разных типов устройств

Как я могу написать свой метод таким образом, что если у устройства есть возможности TYPE_MOBILE, он проверяет его, иначе просто TYPE_WIFI?

Вот мой фактический метод:

public static boolean isNetworkConnected(Context context) { 

    boolean isConnected = false; 

    ConnectivityManager connectivityManager = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo networkInfoWifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    NetworkInfo networkInfoMobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    if (networkInfoWifi.isConnected()|| networkInfoMobile.isConnected()) { 
     isConnected = true; 
    } 

    return isConnected; 
} 

Thx !!

ответ

0

Просто проверить нуль перед использованием IsConnected():

if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) != null) 
{ 
    //implement your business 
} 

или до получения вашей информации сети обнаружить, что ваше устройство Tablet или нет:

public static boolean isTablet(Context context) 
{ 
    return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
} 

затем получить данные сети в соответствии с устройство

0
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
int type=getPhoneType(telephonyManager); 
if(type !=0) 
{ 
NetworkInfo networkInfoWifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
NetworkInfo networkInfoMobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
if (networkInfoWifi.isConnected()|| networkInfoMobile.isConnected()) 
{ isConnected = true; } 
} 
else 
{ 
NetworkInfo networkInfoWifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
if (networkInfoWifi.isConnected()) { isConnected = true; } } 

Значение «type» говорит нам, является ли радиостанция GSM или CDMA или ЕСЛИ радио отсутствует. Это 0, если радио отсутствует, 1 если это GSM и 2, если это CDMA

Смежные вопросы