安卓开发一般都需要进行日志管理,常用操作老司机已为你封装完毕,你可以用这份工具进行管理,具体可以查看源码,现在为你开车,Demo传送门

站点

系统日志输出工具类 → AppKeyBoardMgr

getNetworkState                  : 获取当前手机连接的网络类型
isNetworkConnected : 判断网络是否连接
openNetSetting : 打开网络设置界面
is3gConnected : 检测3G是否连接
getNetworkTypeName : 获取网络类型名称
getCurrentNetworkState : 获取当前网络的状态
getCurrentNetworkSubtype : 获取当前网络的具体类型
isConnectedByState : 判断当前网络是否已经连接
isConnectingByState : 判断当前网络是否正在连接
isDisconnectedByState : 判断当前网络是否已经断开
isDisconnectingByState : 判断当前网络是否正在断开
isSuspendedByState : 判断当前网络是否已经暂停
isUnknownByState : 判断当前网络是否处于未知状态中
isBluetoothByType : 判断当前网络的类型是否是蓝牙
isDummyByType : 判断当前网络的类型是否是虚拟网络
isEthernetByType : 判断当前网络的类型是否是ETHERNET
isMobileByType : 判断当前网络的类型是否是移动网络
isMobileDunByType : 判断当前网络的类型是否是MobileDun
isMobileHipriByType : 判断当前网络的类型是否是MobileHipri
isMobileMmsByType : 判断当前网络的类型是否是MobileMms
isMobileSuplByType : 判断当前网络的类型是否是MobileSupl
isWifiByType : 判断当前网络的类型是否是Wifi
isWimaxByType : 判断当前网络的类型是否是Wimax
is1XRTTBySubtype : 判断当前网络的具体类型是否是1XRTT
isCDMABySubtype : 判断当前网络的具体类型是否是CDMA(Either IS95A or IS95B)
isEDGEBySubtype : 判断当前网络的具体类型是否是EDGE
isEHRPDBySubtype : 判断当前网络的具体类型是否是EHRPD
isEVDO_0BySubtype : 判断当前网络的具体类型是否是EVDO_0
isEVDO_ABySubtype : 判断当前网络的具体类型是否是EVDO_A
isEVDO_BBySubtype : 判断当前网络的具体类型是否是EDGE
isGPRSBySubtype : 判断当前网络的具体类型是否是GPRS
isHSDPABySubtype : 判断当前网络的具体类型是否是HSDPA
isHSPABySubtype : 判断当前网络的具体类型是否是HSPA
isHSPAPBySubtype : 判断当前网络的具体类型是否是HSPAP
isHSUPABySubtype : 判断当前网络的具体类型是否是HSUPA
isIDENBySubtype : 判断当前网络的具体类型是否是IDEN
isLTEBySubtype : 判断当前网络的具体类型是否是LTE
isUMTSBySubtype : 判断当前网络的具体类型是否是UMTS
isUNKNOWNBySubtype : 判断当前网络的具体类型是否是UNKNOWN
isChinaMobile2G : 判断当前网络是否是中国移动2G网络
isChinaUnicom2G : 判断当前网络是否是中国联通2G网络
isChinaUnicom3G : 判断当前网络是否是中国联通3G网络
isChinaTelecom2G : 判断当前网络是否是中国电信2G网络
isChinaTelecom3G : 判断当前网络是否是中国电信3G网络
getWifiState : 获取Wifi的状态,需要ACCESS_WIFI_STATE权限
isWifiOpen : 判断Wifi是否打开,需要ACCESS_WIFI_STATE权限
setWifi : 设置Wifi,需要CHANGE_WIFI_STATE权限
isMobileNetworkOpen : 判断移动网络是否打开,需要ACCESS_NETWORK_STATE权限
getIpAddress : 获取本机IP地址
setDataEnabled : 设置数据流量状态
getWifiScanResults : 获取wifi列表
getScanResultsByBSSID : 过滤扫描结果
getWifiConnectionInfo : 获取wifi连接信息
getProxy : 获得Proxy地址

具体路线

public class AppNetworkMgr {
//未找到合适匹配网络类型
public static final int TYPE_NO = 0;

//中国移动CMNET网络(中国移动GPRS接入方式之一, 主要为PC、笔记本电脑、PDA设立)
public static final int TYPE_MOBILE_CMNET = 1; //中国移动CMWAP网络(中国移动GPRS接入方式之一,主要为手机WAP上网而设立)
public static final int TYPE_MOBILE_CMWAP = 2; //中国联通UNIWAP网络(中国联通划分GPRS接入方式之一, 主要为手机WAP上网而设立)
public static final int TYPE_MOBILE_UNIWAP = 3; //中国联通3GWAP网络
public static final int TYPE_MOBILE_3GWAP = 4; //中国联通3HNET网络
public static final int TYPE_MOBLIE_3GNET = 5; //中国联通UNINET网络(中国联通划分GPRS接入方式之一, 主要为PC、笔记本电脑、PDA设立)
public static final int TYPE_MOBILE_UNINET = 6; //中国电信CTWAP网络
public static final int TYPE_MOBILE_CTWAP = 7; //中国电信CTNET网络
public static final int TYPE_MOBILE_CTNET = 8; //WIFI网络
public static final int TYPE_WIFI = 10; /**
* 网络类型 - 无连接
*/
public static final int NETWORK_TYPE_NO_CONNECTION = -1231545315; public static final String NETWORK_TYPE_WIFI = "wifi";
public static final String NETWORK_TYPE_3G = "eg";
public static final String NETWORK_TYPE_2G = "2g";
public static final String NETWORK_TYPE_WAP = "wap";
public static final String NETWORK_TYPE_UNKNOWN = "unknown";
public static final String NETWORK_TYPE_DISCONNECT = "disconnect"; /**
* 获取当前手机连接的网络类型
*
* @param context 上下文
* @return int 网络类型
*/
public static int getNetworkState(Context context) {
//获取ConnectivityManager对象
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获得当前网络信息
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
//获取网络类型
int currentNetWork = networkInfo.getType();
//手机网络类型
if (currentNetWork == ConnectivityManager.TYPE_MOBILE) {
if(networkInfo.getExtraInfo() != null){
if (networkInfo.getExtraInfo().equals("cmnet")) {
AppLogMessageMgr.i("AppNetworkMgr", "当前网络为中国移动CMNET网络");
return TYPE_MOBILE_CMNET;
}
if (networkInfo.getExtraInfo().equals("cmwap")) {
AppLogMessageMgr.i("AppNetworkMgr", "当前网络为中国移动CMWAP网络");
return TYPE_MOBILE_CMWAP;
}
if(networkInfo.getExtraInfo().equals("uniwap")) {
AppLogMessageMgr.i("AppNetworkMgr", "当前网络为中国联通UNIWAP网络");
return TYPE_MOBILE_UNIWAP;
}
if(networkInfo.getExtraInfo().equals("3gwap")) {
AppLogMessageMgr.i("AppNetworkMgr", "当前网络为中国联通3GWAP网络");
return TYPE_MOBILE_3GWAP;
}
if(networkInfo.getExtraInfo().equals("3gnet")) {
AppLogMessageMgr.i("AppNetworkMgr", "当前网络为中国联通3GNET网络");
return TYPE_MOBLIE_3GNET;
}
if(networkInfo.getExtraInfo().equals("uninet")) {
AppLogMessageMgr.i("AppNetworkMgr", "当前网络为中国联通UNINET网络");
return TYPE_MOBILE_UNINET;
}
if(networkInfo.getExtraInfo().equals("ctwap")) {
AppLogMessageMgr.i("AppNetworkMgr", "当前网络为中国电信CTWAP网络");
return TYPE_MOBILE_UNINET;
}
if(networkInfo.getExtraInfo().equals("ctnet")) {
AppLogMessageMgr.i("AppNetworkMgr", "当前网络为中国电信CTNET网络");
return TYPE_MOBILE_UNINET;
}
}
//WIFI网络类型
}else if (currentNetWork == ConnectivityManager.TYPE_WIFI) {
AppLogMessageMgr.i("AppNetworkMgr", "当前网络为WIFI网络");
return TYPE_WIFI;
}
}
AppLogMessageMgr.i("AppNetworkMgr-->>NetworkUtils", "当前网络为不是我们考虑的网络");
return TYPE_NO;
} /**
* 判断网络是否连接
*
* @param context 上下文
* @return boolean 网络连接状态
*/
public static boolean isNetworkConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
//获取连接对象
if (mNetworkInfo != null) {
//判断是TYPE_MOBILE网络
if(ConnectivityManager.TYPE_MOBILE == mNetworkInfo.getType()){
AppLogMessageMgr.i("AppNetworkMgr", "网络连接类型为:TYPE_MOBILE");
//判断移动网络连接状态
State STATE_MOBILE = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
if (STATE_MOBILE == State.CONNECTED) {
AppLogMessageMgr.i("AppNetworkMgrd", "网络连接类型为:TYPE_MOBILE, 网络连接状态CONNECTED成功!");
return mNetworkInfo.isAvailable();
}
}
//判断是TYPE_WIFI网络
if(ConnectivityManager.TYPE_WIFI == mNetworkInfo.getType()){
AppLogMessageMgr.i("AppNetworkMgr", "网络连接类型为:TYPE_WIFI");
//判断WIFI网络状态
State STATE_WIFI = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if (STATE_WIFI == State.CONNECTED) {
AppLogMessageMgr.i("AppNetworkMgr", "网络连接类型为:TYPE_WIFI, 网络连接状态CONNECTED成功!");
return mNetworkInfo.isAvailable();
}
}
}
}
return false;
} /**
* 判断网络是否连接
*
* @param activity Activity
* @return boolean 网络连接状态
*/
public static boolean isNetworkConnected(Activity activity){
boolean falg = false;
ConnectivityManager mConnectivityManager = (ConnectivityManager) activity.getApplicationContext().getSystemService("connectivity");
if (mConnectivityManager == null){
return falg;
}
NetworkInfo[] arrayOfNetworkInfo = mConnectivityManager.getAllNetworkInfo();
if (arrayOfNetworkInfo != null){
for (int j = 0; j < arrayOfNetworkInfo.length; j++){
if (arrayOfNetworkInfo[j].getState() == State.CONNECTED){
falg = true;
break;
}
}
}
return falg;
} /**
* 打开网络设置界面
*
* @param activity Activity
*/
public static void openNetSetting(Activity activity) {
Intent intent = new Intent("/");
ComponentName cm = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");
intent.setComponent(cm);
intent.setAction("android.intent.action.VIEW");
activity.startActivityForResult(intent, 0);
} /**
* 检测3G是否连接
*
* @param context 上下文
* @return 结果
*/
public static boolean is3gConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null
&& networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return true;
}
}
return false;
} /**
* Get network type
*
* @param context context
* @return NetworkType
*/
public static int getNetworkType(Context context) {
ConnectivityManager connectivityManager
= (ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager == null
? null
: connectivityManager.getActiveNetworkInfo();
return networkInfo == null ? -1 : networkInfo.getType();
} /**
* Get network type name
*
* @param context context
* @return NetworkTypeName
*/
public static String getNetworkTypeName(Context context) {
ConnectivityManager manager
= (ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo;
String type = NETWORK_TYPE_DISCONNECT;
if (manager == null ||
(networkInfo = manager.getActiveNetworkInfo()) == null) {
return type;
}
; if (networkInfo.isConnected()) {
String typeName = networkInfo.getTypeName();
if ("WIFI".equalsIgnoreCase(typeName)) {
type = NETWORK_TYPE_WIFI;
}
else if ("MOBILE".equalsIgnoreCase(typeName)) {
String proxyHost = android.net.Proxy.getDefaultHost();
type = TextUtils.isEmpty(proxyHost)
? (isFastMobileNetwork(context)
? NETWORK_TYPE_3G
: NETWORK_TYPE_2G)
: NETWORK_TYPE_WAP;
}
else {
type = NETWORK_TYPE_UNKNOWN;
}
}
return type;
} /**
* Whether is fast mobile network
*
* @param context context
* @return FastMobileNetwork
*/
private static boolean isFastMobileNetwork(Context context) {
TelephonyManager telephonyManager
= (TelephonyManager) context.getSystemService(
Context.TELEPHONY_SERVICE);
if (telephonyManager == null) {
return false;
} switch (telephonyManager.getNetworkType()) {
case TelephonyManager.NETWORK_TYPE_1xRTT:
return false;
case TelephonyManager.NETWORK_TYPE_CDMA:
return false;
case TelephonyManager.NETWORK_TYPE_EDGE:
return false;
case TelephonyManager.NETWORK_TYPE_EVDO_0:
return true;
case TelephonyManager.NETWORK_TYPE_EVDO_A:
return true;
case TelephonyManager.NETWORK_TYPE_GPRS:
return false;
case TelephonyManager.NETWORK_TYPE_HSDPA:
return true;
case TelephonyManager.NETWORK_TYPE_HSPA:
return true;
case TelephonyManager.NETWORK_TYPE_HSUPA:
return true;
case TelephonyManager.NETWORK_TYPE_UMTS:
return true;
case TelephonyManager.NETWORK_TYPE_EHRPD:
return true;
case TelephonyManager.NETWORK_TYPE_EVDO_B:
return true;
case TelephonyManager.NETWORK_TYPE_HSPAP:
return true;
case TelephonyManager.NETWORK_TYPE_IDEN:
return false;
case TelephonyManager.NETWORK_TYPE_LTE:
return true;
case TelephonyManager.NETWORK_TYPE_UNKNOWN:
return false;
default:
return false;
}
} /**
* 获取当前网络的状态
*
* @param context 上下文
* @return 当前网络的状态。具体类型可参照NetworkInfo.State.CONNECTED、NetworkInfo.State.CONNECTED.DISCONNECTED等字段。当前没有网络连接时返回null
*/
public static NetworkInfo.State getCurrentNetworkState(Context context) {
NetworkInfo networkInfo
= ((ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
return networkInfo != null ? networkInfo.getState() : null;
} /**
* 获取当前网络的类型
*
* @param context 上下文
* @return 当前网络的类型。具体类型可参照ConnectivityManager中的TYPE_BLUETOOTH、TYPE_MOBILE、TYPE_WIFI等字段。当前没有网络连接时返回NetworkUtils.NETWORK_TYPE_NO_CONNECTION
*/
public static int getCurrentNetworkType(Context context) {
NetworkInfo networkInfo
= ((ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
return networkInfo != null
? networkInfo.getType()
: NETWORK_TYPE_NO_CONNECTION;
} /**
* 获取当前网络的具体类型
*
* @param context 上下文
* @return 当前网络的具体类型。具体类型可参照TelephonyManager中的NETWORK_TYPE_1xRTT、NETWORK_TYPE_CDMA等字段。当前没有网络连接时返回NetworkUtils.NETWORK_TYPE_NO_CONNECTION
*/
public static int getCurrentNetworkSubtype(Context context) {
NetworkInfo networkInfo
= ((ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
return networkInfo != null
? networkInfo.getSubtype()
: NETWORK_TYPE_NO_CONNECTION;
} /**
* 判断当前网络是否已经连接
*
* @param context 上下文
* @return 当前网络是否已经连接。false:尚未连接
*/
public static boolean isConnectedByState(Context context) {
return getCurrentNetworkState(context) == NetworkInfo.State.CONNECTED;
} /**
* 判断当前网络是否正在连接
*
* @param context 上下文
* @return 当前网络是否正在连接
*/
public static boolean isConnectingByState(Context context) {
return getCurrentNetworkState(context) == NetworkInfo.State.CONNECTING;
} /**
* 判断当前网络是否已经断开
*
* @param context 上下文
* @return 当前网络是否已经断开
*/
public static boolean isDisconnectedByState(Context context) {
return getCurrentNetworkState(context) ==
NetworkInfo.State.DISCONNECTED;
} /**
* 判断当前网络是否正在断开
*
* @param context 上下文
* @return 当前网络是否正在断开
*/
public static boolean isDisconnectingByState(Context context) {
return getCurrentNetworkState(context) ==
NetworkInfo.State.DISCONNECTING;
} /**
* 判断当前网络是否已经暂停
*
* @param context 上下文
* @return 当前网络是否已经暂停
*/
public static boolean isSuspendedByState(Context context) {
return getCurrentNetworkState(context) == NetworkInfo.State.SUSPENDED;
} /**
* 判断当前网络是否处于未知状态中
*
* @param context 上下文
* @return 当前网络是否处于未知状态中
*/
public static boolean isUnknownByState(Context context) {
return getCurrentNetworkState(context) == NetworkInfo.State.UNKNOWN;
} /**
* 判断当前网络的类型是否是蓝牙
*
* @param context 上下文
* @return 当前网络的类型是否是蓝牙。false:当前没有网络连接或者网络类型不是蓝牙
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public static boolean isBluetoothByType(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
return false;
}
else {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_BLUETOOTH;
}
} /**
* 判断当前网络的类型是否是虚拟网络
*
* @param context 上下文
* @return 当前网络的类型是否是虚拟网络。false:当前没有网络连接或者网络类型不是虚拟网络
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public static boolean isDummyByType(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
return false;
}
else {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_DUMMY;
}
} /**
* 判断当前网络的类型是否是ETHERNET
*
* @param context 上下文
* @return 当前网络的类型是否是ETHERNET。false:当前没有网络连接或者网络类型不是ETHERNET
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public static boolean isEthernetByType(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
return false;
}
else {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_ETHERNET;
}
} /**
* 判断当前网络的类型是否是移动网络
*
* @param context 上下文
* @return 当前网络的类型是否是移动网络。false:当前没有网络连接或者网络类型不是移动网络
*/
public static boolean isMobileByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE;
} /**
* 判断当前网络的类型是否是MobileDun
*
* @param context 上下文
* @return 当前网络的类型是否是MobileDun。false:当前没有网络连接或者网络类型不是MobileDun
*/
public static boolean isMobileDunByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE_DUN;
} /**
* 判断当前网络的类型是否是MobileHipri
*
* @param context 上下文
* @return 当前网络的类型是否是MobileHipri。false:当前没有网络连接或者网络类型不是MobileHipri
*/
public static boolean isMobileHipriByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE_HIPRI;
} /**
* 判断当前网络的类型是否是MobileMms
*
* @param context 上下文
* @return 当前网络的类型是否是MobileMms。false:当前没有网络连接或者网络类型不是MobileMms
*/
public static boolean isMobileMmsByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE_MMS;
} /**
* 判断当前网络的类型是否是MobileSupl
*
* @param context 上下文
* @return 当前网络的类型是否是MobileSupl。false:当前没有网络连接或者网络类型不是MobileSupl
*/
public static boolean isMobileSuplByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE_SUPL;
} /**
* 判断当前网络的类型是否是Wifi
*
* @param context 上下文
* @return 当前网络的类型是否是Wifi。false:当前没有网络连接或者网络类型不是wifi
*/
public static boolean isWifiByType(Context context) {
return getCurrentNetworkType(context) == ConnectivityManager.TYPE_WIFI;
} /**
* 判断当前网络的类型是否是Wimax
*
* @param context 上下文
* @return 当前网络的类型是否是Wimax。false:当前没有网络连接或者网络类型不是Wimax
*/
public static boolean isWimaxByType(Context context) {
return getCurrentNetworkType(context) == ConnectivityManager.TYPE_WIMAX;
} /**
* 判断当前网络的具体类型是否是1XRTT
*
* @param context 上下文
* @return false:当前网络的具体类型是否是1XRTT。false:当前没有网络连接或者具体类型不是1XRTT
*/
public static boolean is1XRTTBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_1xRTT;
} /**
* 判断当前网络的具体类型是否是CDMA(Either IS95A or IS95B)
*
* @param context 上下文
* @return false:当前网络的具体类型是否是CDMA。false:当前没有网络连接或者具体类型不是CDMA
*/
public static boolean isCDMABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_CDMA;
} /**
* 判断当前网络的具体类型是否是EDGE
*
* @param context 上下文
* @return false:当前网络的具体类型是否是EDGE。false:当前没有网络连接或者具体类型不是EDGE
*/
public static boolean isEDGEBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_EDGE;
} /**
* 判断当前网络的具体类型是否是EHRPD
*
* @param context 上下文
* @return false:当前网络的具体类型是否是EHRPD。false:当前没有网络连接或者具体类型不是EHRPD
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static boolean isEHRPDBySubtype(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
return false;
}
else {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_EHRPD;
}
} /**
* 判断当前网络的具体类型是否是EVDO_0
*
* @param context 上下文
* @return false:当前网络的具体类型是否是EVDO_0。false:当前没有网络连接或者具体类型不是EVDO_0
*/
public static boolean isEVDO_0BySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_EVDO_0;
} /**
* 判断当前网络的具体类型是否是EVDO_A
*
* @param context 上下文
* @return false:当前网络的具体类型是否是EVDO_A。false:当前没有网络连接或者具体类型不是EVDO_A
*/
public static boolean isEVDO_ABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_EVDO_A;
} /**
* 判断当前网络的具体类型是否是EDGE
*
* @param context 上下文
* @return false:当前网络的具体类型是否是EVDO_B。false:当前没有网络连接或者具体类型不是EVDO_B
*/
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
public static boolean isEVDO_BBySubtype(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {
return false;
}
else {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_EVDO_B;
}
} /**
* 判断当前网络的具体类型是否是GPRS
* EVDO_Bam context 上下文
*
* @return false:当前网络的具体类型是否是GPRS。false:当前没有网络连接或者具体类型不是GPRS
*/
public static boolean isGPRSBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_GPRS;
} /**
* 判断当前网络的具体类型是否是HSDPA
*
* @param context 上下文
* @return false:当前网络的具体类型是否是HSDPA。false:当前没有网络连接或者具体类型不是HSDPA
*/
public static boolean isHSDPABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_HSDPA;
} /**
* 判断当前网络的具体类型是否是HSPA
*
* @param context 上下文
* @return false:当前网络的具体类型是否是HSPA。false:当前没有网络连接或者具体类型不是HSPA
*/
public static boolean isHSPABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_HSPA;
} /**
* 判断当前网络的具体类型是否是HSPAP
*
* @param context 上下文
* @return false:当前网络的具体类型是否是HSPAP。false:当前没有网络连接或者具体类型不是HSPAP
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public static boolean isHSPAPBySubtype(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
return false;
}
else {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_HSPAP;
}
} /**
* 判断当前网络的具体类型是否是HSUPA
*
* @param context 上下文
* @return false:当前网络的具体类型是否是HSUPA。false:当前没有网络连接或者具体类型不是HSUPA
*/
public static boolean isHSUPABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_HSUPA;
} /**
* 判断当前网络的具体类型是否是IDEN
*
* @param context 上下文
* @return false:当前网络的具体类型是否是IDEN。false:当前没有网络连接或者具体类型不是IDEN
*/
public static boolean isIDENBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_IDEN;
} /**
* 判断当前网络的具体类型是否是LTE
*
* @param context 上下文
* @return false:当前网络的具体类型是否是LTE。false:当前没有网络连接或者具体类型不是LTE
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static boolean isLTEBySubtype(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
return false;
}
else {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_LTE;
}
} /**
* 判断当前网络的具体类型是否是UMTS
*
* @param context 上下文
* @return false:当前网络的具体类型是否是UMTS。false:当前没有网络连接或者具体类型不是UMTS
*/
public static boolean isUMTSBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_UMTS;
} /**
* 判断当前网络的具体类型是否是UNKNOWN
*
* @param context 上下文
* @return false:当前网络的具体类型是否是UNKNOWN。false:当前没有网络连接或者具体类型不是UNKNOWN
*/
public static boolean isUNKNOWNBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_UNKNOWN;
} /**
* 判断当前网络是否是中国移动2G网络
*
* @param context 上下文
* @return false:不是中国移动2G网络或者当前没有网络连接
*/
public static boolean isChinaMobile2G(Context context) {
return isEDGEBySubtype(context);
} /**
* 判断当前网络是否是中国联通2G网络
*
* @param context 上下文
* @return false:不是中国联通2G网络或者当前没有网络连接
*/
public static boolean isChinaUnicom2G(Context context) {
return isGPRSBySubtype(context);
} /**
* 判断当前网络是否是中国联通3G网络
*
* @param context 上下文
* @return false:不是中国联通3G网络或者当前没有网络连接
*/
public static boolean isChinaUnicom3G(Context context) {
return isHSDPABySubtype(context) || isUMTSBySubtype(context);
} /**
* 判断当前网络是否是中国电信2G网络
*
* @param context 上下文
* @return false:不是中国电信2G网络或者当前没有网络连接
*/
public static boolean isChinaTelecom2G(Context context) {
return isCDMABySubtype(context);
} /**
* 判断当前网络是否是中国电信3G网络
*
* @param context 上下文
* @return false:不是中国电信3G网络或者当前没有网络连接
*/
public static boolean isChinaTelecom3G(Context context) {
return isEVDO_0BySubtype(context) || isEVDO_ABySubtype(context) ||
isEVDO_BBySubtype(context);
} /**
* 获取Wifi的状态,需要ACCESS_WIFI_STATE权限
*
* @param context 上下文
* @return 取值为WifiManager中的WIFI_STATE_ENABLED、WIFI_STATE_ENABLING、WIFI_STATE_DISABLED、WIFI_STATE_DISABLING、WIFI_STATE_UNKNOWN之一
* @throws Exception 没有找到wifi设备
*/
public static int getWifiState(Context context) throws Exception {
WifiManager wifiManager = ((WifiManager) context.getSystemService(
Context.WIFI_SERVICE));
if (wifiManager != null) {
return wifiManager.getWifiState();
}
else {
throw new Exception("wifi device not found!");
}
} /**
* 判断Wifi是否打开,需要ACCESS_WIFI_STATE权限
*
* @param context 上下文
* @return true:打开;false:关闭
*/
public static boolean isWifiOpen(Context context) throws Exception {
int wifiState = getWifiState(context);
return wifiState == WifiManager.WIFI_STATE_ENABLED ||
wifiState == WifiManager.WIFI_STATE_ENABLING
? true
: false;
} /**
* 设置Wifi,需要CHANGE_WIFI_STATE权限
*
* @param context 上下文
* @param enable wifi状态
* @return 设置是否成功
*/
public static boolean setWifi(Context context, boolean enable)
throws Exception {
//如果当前wifi的状态和要设置的状态不一样
if (isWifiOpen(context) != enable) {
((WifiManager) context.getSystemService(
Context.WIFI_SERVICE)).setWifiEnabled(enable);
}
return true;
} /**
* 判断移动网络是否打开,需要ACCESS_NETWORK_STATE权限
*
* @param context 上下文
* @return true:打开;false:关闭
*/
public static boolean isMobileNetworkOpen(Context context) {
return (((ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE)).getNetworkInfo(
ConnectivityManager.TYPE_MOBILE)).isConnected();
} /**
* 获取本机IP地址
*
* @return null:没有网络连接
*/
public static String getIpAddress() {
try {
NetworkInterface nerworkInterface;
InetAddress inetAddress;
for (Enumeration<NetworkInterface> en
= NetworkInterface.getNetworkInterfaces();
en.hasMoreElements(); ) {
nerworkInterface = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr
= nerworkInterface.getInetAddresses();
enumIpAddr.hasMoreElements(); ) {
inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
return null;
} catch (SocketException ex) {
ex.printStackTrace();
return null;
}
} /**
* 设置数据流量状态
* @param context
* @param enabled
*/
public static void setDataEnabled(Context context, boolean enabled) {
ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
Class<?> conMgrClass = null;
Field iConMgrField = null;
Object iConMgr = null;
Class<?> iConMgrClass = null;
Method setMobileDataEnabledMethod = null;
try {
conMgrClass = Class.forName(conMgr.getClass().getName());
iConMgrField = conMgrClass.getDeclaredField("mService");
iConMgrField.setAccessible(true);
iConMgr = iConMgrField.get(conMgr);
iConMgrClass = Class.forName(iConMgr.getClass().getName());
setMobileDataEnabledMethod = iConMgrClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConMgr, enabled);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 获取wifi列表
* @param context
* @return
*/
public static List<ScanResult> getWifiScanResults(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
return wifiManager.startScan() ? wifiManager.getScanResults() : null;
} /**
* 过滤扫描结果
* @param context
* @param bssid
* @return
*/
public static ScanResult getScanResultsByBSSID(Context context, String bssid) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
ScanResult scanResult = null;
boolean f = wifiManager.startScan();
if (!f) {
getScanResultsByBSSID(context, bssid);
}
List<ScanResult> list = wifiManager.getScanResults();
if (list != null) {
for (int i = 0; i < list.size(); i++) {
scanResult = list.get(i);
if (scanResult.BSSID.equals(bssid)) {
break;
}
}
}
return scanResult;
} /**
* 获取wifi连接信息
* @param context
* @return
*/
public static WifiInfo getWifiConnectionInfo(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
return wifiManager.getConnectionInfo();
} /**
* 获得Proxy地址
*
* @param context 上下文
* @return Proxy地址
*/
public static String getProxy(Context context) {
String proxy = null;
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
NetworkInfo networkinfo = connectivityManager.getActiveNetworkInfo();
if (networkinfo != null && networkinfo.isAvailable()) {
String stringExtraInfo = networkinfo.getExtraInfo();
if (stringExtraInfo != null && ("cmwap".equals(stringExtraInfo) || "uniwap".equals(stringExtraInfo))) {
proxy = "10.0.0.172:80";
} else if (stringExtraInfo != null && "ctwap".equals(stringExtraInfo)) {
proxy = "10.0.0.200:80";
}
}
}
return proxy;
}

}

终点站

好了,终点站到了,如果对本次旅途满意的话,请给五星好评哦,没关注的小伙伴轻轻点个上方的关注,毕竟老司机牺牲了很多时间才换来这么一份工具类,如果该工具类依赖其他工具类,都可以在我的史上最全的常用开发工具类收集(持续更新中)中找到。

App网络管理的更多相关文章

  1. 家庭洗车APP --- Androidclient开展 之 网络框架包介绍(一)

    家庭洗车APP --- Android客户端开发 之 网络框架包介绍(一) 上篇文章中给大家简单介绍了一些业务.上门洗车APP --- Android客户端开发 前言及业务简单介绍,本篇文章给大家介绍 ...

  2. Ubuntu18.04的网络管理netplan和防火墙ufw

    Netplan Ubuntu18.04使用的网络管理是netplan, 配置文件在/etc/netplan/下 刚安装完成的配置是这样的 刚安装完成的配置是这样的 network: ethernets ...

  3. Docker网络管理机制实例解析+创建自己Docker网络

    实例解析Docker网络管理机制(bridge network,overlay network),介绍Docker默认的网络方式,并创建自己的网络桥接方式,将开发的容器添加至自己新建的网络,提高Doc ...

  4. 上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二)

    上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二) 前几篇博文中给大家介绍了一下APP中的基本业务及开发本项目使用的网络架构: 上门洗车APP --- Androidc ...

  5. docker 管理应用程序数据和网络管理

    Volume和Bind Mount Docker提供三种不同方式将数据从宿主机挂载到容器中:volumes,bind mounts和tmpfs volumes:Docker管理宿主机文件系统的一部分( ...

  6. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  7. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  8. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  9. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

随机推荐

  1. linux/Windows系统如何安装PHP-openssl扩展

    今天倒腾了半天公司的OA办公系统,原来现在很多的smtp服务器是需要ssl方式加密的,而支持ssl需要php加载openssl扩展.所以本文我们将和大家一起分享如何在linux/Windows系统下安 ...

  2. vue路由跳转 vue-router的使用

    1.路由对象和路由匹配 路由对象,即$router会被注入每个组件中,可以利用它进行一些信息的获取.如 属性 说明 $route.path 当前路由对象的路径,如'/view/a' $rotue.pa ...

  3. Spark官方1 ---------Spark SQL和DataFrame指南(1.5.0)

    概述 Spark SQL是用于结构化数据处理的Spark模块.它提供了一个称为DataFrames的编程抽象,也可以作为分布式SQL查询引擎. Spark SQL也可用于从现有的Hive安装中读取数据 ...

  4. Mybatis #{ } 和 ${ } 区别

    动态 SQL 是 Mybatis 的强大特性之一,也是它优于其他 ORM 框架的一个重要原因.Mybatis 在对 sql 语句进行预编译之前,会对 sql 进行动态解析,解析为一个 BoundSql ...

  5. Crayon 线段树或者树状数组

    Crayon Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatus ...

  6. Dice (II) (DP)唉,当时没做出来

    Dice (II) Time Limit: 3000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu [Submit]   [ ...

  7. django ajax练习

    这几天遇到了django ajax请求出错的问题,总结一下 前端js:我这里创建的是一个字典格式的数据,前端js收到字典之后也是要用字典的形式去解包后台传送过来的数据,比如我下面的写法:data['s ...

  8. 解决VMware下安装Ubuntu 16.04 不支持1920X1080分辨率的问题

    解决方法: flashmx@ubuntu:~$ cvt # 192.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz Modeline -hsync +vsync fl ...

  9. java中类之间的关系之封装、继承与多态的几个例子

    例子1 1.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和测试类.要求: (1)Monkey类中有个public void speak()方法,在speak方法中输出&q ...

  10. win7+ ubuntu 双系统

    windows +linux双系统组合有多种方式,只要划好分区两者即可共处,本文是为了解决两者在启动时遇到的问题. 第三方启动器(例如grub,grub2,grub4dos等)