Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检查网络中是否有两种不同类型的设备_Android_Connection - Fatal编程技术网

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

Android 检查网络中是否有两种不同类型的设备,android,connection,Android,Connection,我在检查设备是否连接到Wifi或电话数据时遇到了问题。 事实上,它在手机上运行得很好,但在平板电脑上……它崩溃了。 原因是某些平板电脑没有ConnectivityManager.TYPE_MOBILE 那么,我如何编写我的方法,如果设备具有TYPE_移动功能,它会检查它,否则只是类型_WIFI 以下是我的实际方法: public static boolean isNetworkConnected(Context context) { boolean isConnected = fals

我在检查设备是否连接到Wifi或电话数据时遇到了问题。 事实上,它在手机上运行得很好,但在平板电脑上……它崩溃了。 原因是某些平板电脑没有ConnectivityManager.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;
}

谢谢

在使用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;
}
然后根据设备获取您的网络信息

   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;如果是GSM,则为1;如果是CDMA,则为2