检查网络是否有两种不同类型的设备

时间:2014-12-07 07:00:47

标签: android connection

我的方法问题是检查设备是否连接到Wifi或电话数据。 事实上,它在手机上运行得非常好,但在平板电脑上...它会崩溃。 原因是某些平板电脑没有ConnectivityManager.TYPE_MOBILE。

那么如何编写我的方法,如果Device具有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 !!

2 个答案:

答案 0 :(得分:0)

在使用isConnected()之前检查null:

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

或在您的网络信息检测到您的设备是平板电脑之前或之前:

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

然后根据设备获取您的网络信息

答案 1 :(得分: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或IF无线电不存在。如果不存在无线电则为0,如果是GSM则为1,如果是CDMA则为2