安卓開發(fā)一般都需要進(jìn)行日志管理,常用操作老司機(jī)已為你封裝完畢舰攒,你可以用這份工具進(jìn)行管理,具體可以查看源碼悔醋,現(xiàn)在為你開車摩窃,Demo傳送門。
站點(diǎn)
系統(tǒng)日志輸出工具類 → AppKeyBoardMgr
getNetworkState : 獲取當(dāng)前手機(jī)連接的網(wǎng)絡(luò)類型
isNetworkConnected : 判斷網(wǎng)絡(luò)是否連接
openNetSetting : 打開網(wǎng)絡(luò)設(shè)置界面
is3gConnected : 檢測(cè)3G是否連接
getNetworkTypeName : 獲取網(wǎng)絡(luò)類型名稱
getCurrentNetworkState : 獲取當(dāng)前網(wǎng)絡(luò)的狀態(tài)
getCurrentNetworkSubtype : 獲取當(dāng)前網(wǎng)絡(luò)的具體類型
isConnectedByState : 判斷當(dāng)前網(wǎng)絡(luò)是否已經(jīng)連接
isConnectingByState : 判斷當(dāng)前網(wǎng)絡(luò)是否正在連接
isDisconnectedByState : 判斷當(dāng)前網(wǎng)絡(luò)是否已經(jīng)斷開
isDisconnectingByState : 判斷當(dāng)前網(wǎng)絡(luò)是否正在斷開
isSuspendedByState : 判斷當(dāng)前網(wǎng)絡(luò)是否已經(jīng)暫停
isUnknownByState : 判斷當(dāng)前網(wǎng)絡(luò)是否處于未知狀態(tài)中
isBluetoothByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是藍(lán)牙
isDummyByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是虛擬網(wǎng)絡(luò)
isEthernetByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是ETHERNET
isMobileByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是移動(dòng)網(wǎng)絡(luò)
isMobileDunByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是MobileDun
isMobileHipriByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是MobileHipri
isMobileMmsByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是MobileMms
isMobileSuplByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是MobileSupl
isWifiByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是Wifi
isWimaxByType : 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是Wimax
is1XRTTBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是1XRTT
isCDMABySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是CDMA(Either IS95A or IS95B)
isEDGEBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EDGE
isEHRPDBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EHRPD
isEVDO_0BySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EVDO_0
isEVDO_ABySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EVDO_A
isEVDO_BBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EDGE
isGPRSBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是GPRS
isHSDPABySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSDPA
isHSPABySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSPA
isHSPAPBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSPAP
isHSUPABySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSUPA
isIDENBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是IDEN
isLTEBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是LTE
isUMTSBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是UMTS
isUNKNOWNBySubtype : 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是UNKNOWN
isChinaMobile2G : 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)移動(dòng)2G網(wǎng)絡(luò)
isChinaUnicom2G : 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)聯(lián)通2G網(wǎng)絡(luò)
isChinaUnicom3G : 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)聯(lián)通3G網(wǎng)絡(luò)
isChinaTelecom2G : 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)電信2G網(wǎng)絡(luò)
isChinaTelecom3G : 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)電信3G網(wǎng)絡(luò)
getWifiState : 獲取Wifi的狀態(tài)芬骄,需要ACCESS_WIFI_STATE權(quán)限
isWifiOpen : 判斷Wifi是否打開猾愿,需要ACCESS_WIFI_STATE權(quán)限
setWifi : 設(shè)置Wifi,需要CHANGE_WIFI_STATE權(quán)限
isMobileNetworkOpen : 判斷移動(dòng)網(wǎng)絡(luò)是否打開账阻,需要ACCESS_NETWORK_STATE權(quán)限
getIpAddress : 獲取本機(jī)IP地址
setDataEnabled : 設(shè)置數(shù)據(jù)流量狀態(tài)
getWifiScanResults : 獲取wifi列表
getScanResultsByBSSID : 過(guò)濾掃描結(jié)果
getWifiConnectionInfo : 獲取wifi連接信息
getProxy : 獲得Proxy地址
具體路線
public class AppNetworkMgr {
//未找到合適匹配網(wǎng)絡(luò)類型
public static final int TYPE_NO = 0;
//中國(guó)移動(dòng)CMNET網(wǎng)絡(luò)(中國(guó)移動(dòng)GPRS接入方式之一, 主要為PC蒂秘、筆記本電腦、PDA設(shè)立)
public static final int TYPE_MOBILE_CMNET = 1;
//中國(guó)移動(dòng)CMWAP網(wǎng)絡(luò)(中國(guó)移動(dòng)GPRS接入方式之一,主要為手機(jī)WAP上網(wǎng)而設(shè)立)
public static final int TYPE_MOBILE_CMWAP = 2;
//中國(guó)聯(lián)通UNIWAP網(wǎng)絡(luò)(中國(guó)聯(lián)通劃分GPRS接入方式之一, 主要為手機(jī)WAP上網(wǎng)而設(shè)立)
public static final int TYPE_MOBILE_UNIWAP = 3;
//中國(guó)聯(lián)通3GWAP網(wǎng)絡(luò)
public static final int TYPE_MOBILE_3GWAP = 4;
//中國(guó)聯(lián)通3HNET網(wǎng)絡(luò)
public static final int TYPE_MOBLIE_3GNET = 5;
//中國(guó)聯(lián)通UNINET網(wǎng)絡(luò)(中國(guó)聯(lián)通劃分GPRS接入方式之一, 主要為PC淘太、筆記本電腦姻僧、PDA設(shè)立)
public static final int TYPE_MOBILE_UNINET = 6;
//中國(guó)電信CTWAP網(wǎng)絡(luò)
public static final int TYPE_MOBILE_CTWAP = 7;
//中國(guó)電信CTNET網(wǎng)絡(luò)
public static final int TYPE_MOBILE_CTNET = 8;
//WIFI網(wǎng)絡(luò)
public static final int TYPE_WIFI = 10;
/**
* 網(wǎng)絡(luò)類型 - 無(wú)連接
*/
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";
/**
* 獲取當(dāng)前手機(jī)連接的網(wǎng)絡(luò)類型
*
* @param context 上下文
* @return int 網(wǎng)絡(luò)類型
*/
public static int getNetworkState(Context context) {
//獲取ConnectivityManager對(duì)象
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//獲得當(dāng)前網(wǎng)絡(luò)信息
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
//獲取網(wǎng)絡(luò)類型
int currentNetWork = networkInfo.getType();
//手機(jī)網(wǎng)絡(luò)類型
if (currentNetWork == ConnectivityManager.TYPE_MOBILE) {
if(networkInfo.getExtraInfo() != null){
if (networkInfo.getExtraInfo().equals("cmnet")) {
AppLogMessageMgr.i("AppNetworkMgr", "當(dāng)前網(wǎng)絡(luò)為中國(guó)移動(dòng)CMNET網(wǎng)絡(luò)");
return TYPE_MOBILE_CMNET;
}
if (networkInfo.getExtraInfo().equals("cmwap")) {
AppLogMessageMgr.i("AppNetworkMgr", "當(dāng)前網(wǎng)絡(luò)為中國(guó)移動(dòng)CMWAP網(wǎng)絡(luò)");
return TYPE_MOBILE_CMWAP;
}
if(networkInfo.getExtraInfo().equals("uniwap")) {
AppLogMessageMgr.i("AppNetworkMgr", "當(dāng)前網(wǎng)絡(luò)為中國(guó)聯(lián)通UNIWAP網(wǎng)絡(luò)");
return TYPE_MOBILE_UNIWAP;
}
if(networkInfo.getExtraInfo().equals("3gwap")) {
AppLogMessageMgr.i("AppNetworkMgr", "當(dāng)前網(wǎng)絡(luò)為中國(guó)聯(lián)通3GWAP網(wǎng)絡(luò)");
return TYPE_MOBILE_3GWAP;
}
if(networkInfo.getExtraInfo().equals("3gnet")) {
AppLogMessageMgr.i("AppNetworkMgr", "當(dāng)前網(wǎng)絡(luò)為中國(guó)聯(lián)通3GNET網(wǎng)絡(luò)");
return TYPE_MOBLIE_3GNET;
}
if(networkInfo.getExtraInfo().equals("uninet")) {
AppLogMessageMgr.i("AppNetworkMgr", "當(dāng)前網(wǎng)絡(luò)為中國(guó)聯(lián)通UNINET網(wǎng)絡(luò)");
return TYPE_MOBILE_UNINET;
}
if(networkInfo.getExtraInfo().equals("ctwap")) {
AppLogMessageMgr.i("AppNetworkMgr", "當(dāng)前網(wǎng)絡(luò)為中國(guó)電信CTWAP網(wǎng)絡(luò)");
return TYPE_MOBILE_UNINET;
}
if(networkInfo.getExtraInfo().equals("ctnet")) {
AppLogMessageMgr.i("AppNetworkMgr", "當(dāng)前網(wǎng)絡(luò)為中國(guó)電信CTNET網(wǎng)絡(luò)");
return TYPE_MOBILE_UNINET;
}
}
//WIFI網(wǎng)絡(luò)類型
}else if (currentNetWork == ConnectivityManager.TYPE_WIFI) {
AppLogMessageMgr.i("AppNetworkMgr", "當(dāng)前網(wǎng)絡(luò)為WIFI網(wǎng)絡(luò)");
return TYPE_WIFI;
}
}
AppLogMessageMgr.i("AppNetworkMgr-->>NetworkUtils", "當(dāng)前網(wǎng)絡(luò)為不是我們考慮的網(wǎng)絡(luò)");
return TYPE_NO;
}
/**
* 判斷網(wǎng)絡(luò)是否連接
*
* @param context 上下文
* @return boolean 網(wǎng)絡(luò)連接狀態(tài)
*/
public static boolean isNetworkConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
//獲取連接對(duì)象
if (mNetworkInfo != null) {
//判斷是TYPE_MOBILE網(wǎng)絡(luò)
if(ConnectivityManager.TYPE_MOBILE == mNetworkInfo.getType()){
AppLogMessageMgr.i("AppNetworkMgr", "網(wǎng)絡(luò)連接類型為:TYPE_MOBILE");
//判斷移動(dòng)網(wǎng)絡(luò)連接狀態(tài)
State STATE_MOBILE = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
if (STATE_MOBILE == State.CONNECTED) {
AppLogMessageMgr.i("AppNetworkMgrd", "網(wǎng)絡(luò)連接類型為:TYPE_MOBILE, 網(wǎng)絡(luò)連接狀態(tài)CONNECTED成功!");
return mNetworkInfo.isAvailable();
}
}
//判斷是TYPE_WIFI網(wǎng)絡(luò)
if(ConnectivityManager.TYPE_WIFI == mNetworkInfo.getType()){
AppLogMessageMgr.i("AppNetworkMgr", "網(wǎng)絡(luò)連接類型為:TYPE_WIFI");
//判斷WIFI網(wǎng)絡(luò)狀態(tài)
State STATE_WIFI = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if (STATE_WIFI == State.CONNECTED) {
AppLogMessageMgr.i("AppNetworkMgr", "網(wǎng)絡(luò)連接類型為:TYPE_WIFI, 網(wǎng)絡(luò)連接狀態(tài)CONNECTED成功蒲牧!");
return mNetworkInfo.isAvailable();
}
}
}
}
return false;
}
/**
* 判斷網(wǎng)絡(luò)是否連接
*
* @param activity Activity
* @return boolean 網(wǎng)絡(luò)連接狀態(tài)
*/
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;
}
/**
* 打開網(wǎng)絡(luò)設(shè)置界面
*
* @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);
}
/**
* 檢測(cè)3G是否連接
*
* @param context 上下文
* @return 結(jié)果
*/
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;
}
}
/**
* 獲取當(dāng)前網(wǎng)絡(luò)的狀態(tài)
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的狀態(tài)撇贺。具體類型可參照NetworkInfo.State.CONNECTED、NetworkInfo.State.CONNECTED.DISCONNECTED等字段造成。當(dāng)前沒(méi)有網(wǎng)絡(luò)連接時(shí)返回null
*/
public static NetworkInfo.State getCurrentNetworkState(Context context) {
NetworkInfo networkInfo
= ((ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
return networkInfo != null ? networkInfo.getState() : null;
}
/**
* 獲取當(dāng)前網(wǎng)絡(luò)的類型
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型显熏。具體類型可參照ConnectivityManager中的TYPE_BLUETOOTH、TYPE_MOBILE晒屎、TYPE_WIFI等字段喘蟆。當(dāng)前沒(méi)有網(wǎng)絡(luò)連接時(shí)返回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;
}
/**
* 獲取當(dāng)前網(wǎng)絡(luò)的具體類型
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的具體類型。具體類型可參照TelephonyManager中的NETWORK_TYPE_1xRTT鼓鲁、NETWORK_TYPE_CDMA等字段蕴轨。當(dāng)前沒(méi)有網(wǎng)絡(luò)連接時(shí)返回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;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否已經(jīng)連接
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)是否已經(jīng)連接。false:尚未連接
*/
public static boolean isConnectedByState(Context context) {
return getCurrentNetworkState(context) == NetworkInfo.State.CONNECTED;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否正在連接
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)是否正在連接
*/
public static boolean isConnectingByState(Context context) {
return getCurrentNetworkState(context) == NetworkInfo.State.CONNECTING;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否已經(jīng)斷開
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)是否已經(jīng)斷開
*/
public static boolean isDisconnectedByState(Context context) {
return getCurrentNetworkState(context) ==
NetworkInfo.State.DISCONNECTED;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否正在斷開
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)是否正在斷開
*/
public static boolean isDisconnectingByState(Context context) {
return getCurrentNetworkState(context) ==
NetworkInfo.State.DISCONNECTING;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否已經(jīng)暫停
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)是否已經(jīng)暫停
*/
public static boolean isSuspendedByState(Context context) {
return getCurrentNetworkState(context) == NetworkInfo.State.SUSPENDED;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否處于未知狀態(tài)中
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)是否處于未知狀態(tài)中
*/
public static boolean isUnknownByState(Context context) {
return getCurrentNetworkState(context) == NetworkInfo.State.UNKNOWN;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是藍(lán)牙
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是藍(lán)牙骇吭。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是藍(lán)牙
*/
@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;
}
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是虛擬網(wǎng)絡(luò)
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是虛擬網(wǎng)絡(luò)橙弱。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是虛擬網(wǎng)絡(luò)
*/
@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;
}
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是ETHERNET
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是ETHERNET。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是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;
}
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是移動(dòng)網(wǎng)絡(luò)
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是移動(dòng)網(wǎng)絡(luò)。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是移動(dòng)網(wǎng)絡(luò)
*/
public static boolean isMobileByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是MobileDun
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是MobileDun棘脐。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是MobileDun
*/
public static boolean isMobileDunByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE_DUN;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是MobileHipri
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是MobileHipri斜筐。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是MobileHipri
*/
public static boolean isMobileHipriByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE_HIPRI;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是MobileMms
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是MobileMms。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是MobileMms
*/
public static boolean isMobileMmsByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE_MMS;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是MobileSupl
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是MobileSupl蛀缝。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是MobileSupl
*/
public static boolean isMobileSuplByType(Context context) {
return getCurrentNetworkType(context) ==
ConnectivityManager.TYPE_MOBILE_SUPL;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是Wifi
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是Wifi顷链。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是wifi
*/
public static boolean isWifiByType(Context context) {
return getCurrentNetworkType(context) == ConnectivityManager.TYPE_WIFI;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的類型是否是Wimax
*
* @param context 上下文
* @return 當(dāng)前網(wǎng)絡(luò)的類型是否是Wimax。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)類型不是Wimax
*/
public static boolean isWimaxByType(Context context) {
return getCurrentNetworkType(context) == ConnectivityManager.TYPE_WIMAX;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是1XRTT
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是1XRTT屈梁。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是1XRTT
*/
public static boolean is1XRTTBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_1xRTT;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是CDMA(Either IS95A or IS95B)
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是CDMA嗤练。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是CDMA
*/
public static boolean isCDMABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_CDMA;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EDGE
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是EDGE。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是EDGE
*/
public static boolean isEDGEBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_EDGE;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EHRPD
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是EHRPD在讶。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是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;
}
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EVDO_0
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是EVDO_0煞抬。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是EVDO_0
*/
public static boolean isEVDO_0BySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_EVDO_0;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EVDO_A
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是EVDO_A。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是EVDO_A
*/
public static boolean isEVDO_ABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_EVDO_A;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是EDGE
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是EVDO_B构哺。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是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;
}
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是GPRS
* EVDO_Bam context 上下文
*
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是GPRS革答。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是GPRS
*/
public static boolean isGPRSBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_GPRS;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSDPA
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSDPA。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是HSDPA
*/
public static boolean isHSDPABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_HSDPA;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSPA
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSPA遮婶。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是HSPA
*/
public static boolean isHSPABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_HSPA;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSPAP
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSPAP蝗碎。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是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;
}
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSUPA
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是HSUPA湖笨。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是HSUPA
*/
public static boolean isHSUPABySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_HSUPA;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是IDEN
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是IDEN旗扑。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是IDEN
*/
public static boolean isIDENBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_IDEN;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是LTE
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是LTE。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是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;
}
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是UMTS
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是UMTS慈省。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是UMTS
*/
public static boolean isUMTSBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_UMTS;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)的具體類型是否是UNKNOWN
*
* @param context 上下文
* @return false:當(dāng)前網(wǎng)絡(luò)的具體類型是否是UNKNOWN臀防。false:當(dāng)前沒(méi)有網(wǎng)絡(luò)連接或者具體類型不是UNKNOWN
*/
public static boolean isUNKNOWNBySubtype(Context context) {
return getCurrentNetworkSubtype(context) ==
TelephonyManager.NETWORK_TYPE_UNKNOWN;
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)移動(dòng)2G網(wǎng)絡(luò)
*
* @param context 上下文
* @return false:不是中國(guó)移動(dòng)2G網(wǎng)絡(luò)或者當(dāng)前沒(méi)有網(wǎng)絡(luò)連接
*/
public static boolean isChinaMobile2G(Context context) {
return isEDGEBySubtype(context);
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)聯(lián)通2G網(wǎng)絡(luò)
*
* @param context 上下文
* @return false:不是中國(guó)聯(lián)通2G網(wǎng)絡(luò)或者當(dāng)前沒(méi)有網(wǎng)絡(luò)連接
*/
public static boolean isChinaUnicom2G(Context context) {
return isGPRSBySubtype(context);
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)聯(lián)通3G網(wǎng)絡(luò)
*
* @param context 上下文
* @return false:不是中國(guó)聯(lián)通3G網(wǎng)絡(luò)或者當(dāng)前沒(méi)有網(wǎng)絡(luò)連接
*/
public static boolean isChinaUnicom3G(Context context) {
return isHSDPABySubtype(context) || isUMTSBySubtype(context);
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)電信2G網(wǎng)絡(luò)
*
* @param context 上下文
* @return false:不是中國(guó)電信2G網(wǎng)絡(luò)或者當(dāng)前沒(méi)有網(wǎng)絡(luò)連接
*/
public static boolean isChinaTelecom2G(Context context) {
return isCDMABySubtype(context);
}
/**
* 判斷當(dāng)前網(wǎng)絡(luò)是否是中國(guó)電信3G網(wǎng)絡(luò)
*
* @param context 上下文
* @return false:不是中國(guó)電信3G網(wǎng)絡(luò)或者當(dāng)前沒(méi)有網(wǎng)絡(luò)連接
*/
public static boolean isChinaTelecom3G(Context context) {
return isEVDO_0BySubtype(context) || isEVDO_ABySubtype(context) ||
isEVDO_BBySubtype(context);
}
/**
* 獲取Wifi的狀態(tài),需要ACCESS_WIFI_STATE權(quán)限
*
* @param context 上下文
* @return 取值為WifiManager中的WIFI_STATE_ENABLED边败、WIFI_STATE_ENABLING袱衷、WIFI_STATE_DISABLED、WIFI_STATE_DISABLING笑窜、WIFI_STATE_UNKNOWN之一
* @throws Exception 沒(méi)有找到wifi設(shè)備
*/
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權(quán)限
*
* @param context 上下文
* @return true:打開;false:關(guān)閉
*/
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;
}
/**
* 設(shè)置Wifi排截,需要CHANGE_WIFI_STATE權(quán)限
*
* @param context 上下文
* @param enable wifi狀態(tài)
* @return 設(shè)置是否成功
*/
public static boolean setWifi(Context context, boolean enable)
throws Exception {
//如果當(dāng)前wifi的狀態(tài)和要設(shè)置的狀態(tài)不一樣
if (isWifiOpen(context) != enable) {
((WifiManager) context.getSystemService(
Context.WIFI_SERVICE)).setWifiEnabled(enable);
}
return true;
}
/**
* 判斷移動(dòng)網(wǎng)絡(luò)是否打開嫌蚤,需要ACCESS_NETWORK_STATE權(quán)限
*
* @param context 上下文
* @return true:打開;false:關(guān)閉
*/
public static boolean isMobileNetworkOpen(Context context) {
return (((ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE)).getNetworkInfo(
ConnectivityManager.TYPE_MOBILE)).isConnected();
}
/**
* 獲取本機(jī)IP地址
*
* @return null:沒(méi)有網(wǎng)絡(luò)連接
*/
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;
}
}
/**
* 設(shè)置數(shù)據(jù)流量狀態(tài)
* @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;
}
/**
* 過(guò)濾掃描結(jié)果
* @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;
}
}
終點(diǎn)站
好了断傲,終點(diǎn)站到了脱吱,如果對(duì)本次旅途滿意的話,請(qǐng)給五星好評(píng)哦认罩,沒(méi)關(guān)注的小伙伴輕輕點(diǎn)個(gè)上方的關(guān)注箱蝠,畢竟老司機(jī)犧牲了很多時(shí)間才換來(lái)這么一份工具類,如果該工具類依賴其他工具類,都可以在我的史上最全的常用開發(fā)工具類收集(持續(xù)更新中)中找到宦搬。