我的方法问题是检查设备是否连接到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 !!
答案 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