/*
* Copyright (c) 2017 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.util;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
public class ConnectivityUtils {
private ConnectivityUtils() {}
public static boolean isConnected(Context context) {
return isConnected(getActiveNetworkInfo(context));
}
private static boolean isConnected(NetworkInfo networkInfo) {
return networkInfo != null && networkInfo.isConnected();
}
public static boolean isNonMobileConnected(Context context) {
return isNonMobileConnected(getActiveNetworkInfo(context));
}
private static boolean isNonMobileConnected(NetworkInfo networkInfo) {
return isConnected(networkInfo) && !isMobileNetwork(networkInfo);
}
private static boolean isMobileNetwork(@NonNull NetworkInfo networkInfo) {
return isNetworkTypeMobile(networkInfo.getType());
}
/*
* @see ConnectivityManager#isNetworkTypeMobile(int)
*/
private static boolean isNetworkTypeMobile(int networkType) {
switch (networkType) {
case ConnectivityManager.TYPE_MOBILE:
//noinspection deprecation
case ConnectivityManager.TYPE_MOBILE_MMS:
//noinspection deprecation
case ConnectivityManager.TYPE_MOBILE_SUPL:
case ConnectivityManager.TYPE_MOBILE_DUN:
//noinspection deprecation
case ConnectivityManager.TYPE_MOBILE_HIPRI:
//case ConnectivityManager.TYPE_MOBILE_FOTA:
//case ConnectivityManager.TYPE_MOBILE_IMS:
//case ConnectivityManager.TYPE_MOBILE_CBS:
//case ConnectivityManager.TYPE_MOBILE_IA:
//case ConnectivityManager.TYPE_MOBILE_EMERGENCY:
return true;
default:
return false;
}
}
@Nullable
private static NetworkInfo getActiveNetworkInfo(Context context) {
return getConnectivityManager(context).getActiveNetworkInfo();
}
private static ConnectivityManager getConnectivityManager(Context context) {
return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
}