packagetext.bawei.com.internet;
importandroid.content.Context;
importandroid.net.ConnectivityManager;
importandroid.net.NetworkInfo;
importandroid.os.Bundle;
importandroid.support.v7.app.AppCompatActivity;
importandroid.telephony.TelephonyManager;
importandroid.widget.TextView;
publicclassMainActivityextendsAppCompatActivity {
privateTextViewbo1;
privateTextViewbo2;
privateTextViewbo3;
privateTextViewbo4;
privateTextViewbo5;
privateTextViewbo6;
privateTextViewbo7;
privateTextViewbo8;
privateTextViewbo9;
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//判斷是否有網(wǎng)絡(luò)連接
booleannetworkConnected = isNetworkConnected(MainActivity.this);
bo1.setText("判斷是否有網(wǎng)絡(luò)連接networkConnected:? "+ networkConnected);
//判斷WIFI網(wǎng)絡(luò)是否可用
booleanwifiConnected = isWifiConnected(MainActivity.this);
bo2.setText("判斷WIFI網(wǎng)絡(luò)是否可用wifiConnected:? "+ wifiConnected);
//判斷MOBILE網(wǎng)絡(luò)是否可用
booleanmobileConnected = isMobileConnected(MainActivity.this);
bo3.setText("判斷MOBILE網(wǎng)絡(luò)是否可用mobileConnected:? "+ mobileConnected);
//-----------------------------------------------
//獲取當(dāng)前網(wǎng)絡(luò)連接的類型信息
//獲取當(dāng)前的網(wǎng)絡(luò)狀態(tài)-1:沒有網(wǎng)絡(luò)1:WIFI網(wǎng)絡(luò)2:wap網(wǎng)絡(luò)3:net網(wǎng)絡(luò)
intconnectedType =getConnectedType(MainActivity.this);
bo4.setText("獲取當(dāng)前網(wǎng)絡(luò)連接的類型信息connectedType:? "+ connectedType);
ConnectivityManager connMgr = (ConnectivityManager) MainActivity.this
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
intsubtype = networkInfo.getSubtype();
String subtypeName = networkInfo.getSubtypeName();
bo5.setText("網(wǎng)絡(luò)的類型"+ subtype +"? ? "+"網(wǎng)絡(luò)的名字"+ subtypeName);
intnetworkState = IntenetUtil.getNetworkState(MainActivity.this);
switch(networkState) {
case0:
bo6.setText("當(dāng)前網(wǎng)絡(luò)類型networkState:? "+"沒有網(wǎng)絡(luò)連接");
break;
case1:
bo6.setText("當(dāng)前網(wǎng)絡(luò)類型networkState:? "+"wifi連接");
break;
case2:
bo6.setText("當(dāng)前網(wǎng)絡(luò)類型networkState:? "+"2G");
break;
case3:
bo6.setText("當(dāng)前網(wǎng)絡(luò)類型networkState:? "+"3G");
break;
case4:
bo6.setText("當(dāng)前網(wǎng)絡(luò)類型networkState:? "+"4G");
break;
case5:
bo6.setText("當(dāng)前網(wǎng)絡(luò)類型networkState:? "+"NETWORN_MOBILE");
break;
}
}
//判斷是否有網(wǎng)絡(luò)連接
publicbooleanisNetworkConnected(Context context) {
if(context !=null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if(mNetworkInfo !=null) {
returnmNetworkInfo.isAvailable();
}
}
returnfalse;
}
//判斷WIFI網(wǎng)絡(luò)是否可用
publicbooleanisWifiConnected(Context context) {
if(context !=null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWiFiNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(mWiFiNetworkInfo !=null) {
returnmWiFiNetworkInfo.isAvailable();
}
}
returnfalse;
}
//判斷MOBILE網(wǎng)絡(luò)是否可用
publicbooleanisMobileConnected(Context context) {
if(context !=null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mMobileNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if(mMobileNetworkInfo !=null) {
returnmMobileNetworkInfo.isAvailable();
}
}
returnfalse;
}
//獲取當(dāng)前網(wǎng)絡(luò)連接的類型信息
publicstaticintgetConnectedType(Context context) {
if(context !=null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if(mNetworkInfo !=null&& mNetworkInfo.isAvailable()) {
returnmNetworkInfo.getType();
}
}
return-1;
}
privatevoidinitView() {
bo1= (TextView) findViewById(R.id.bo1);
bo2= (TextView) findViewById(R.id.bo2);
bo3= (TextView) findViewById(R.id.bo3);
bo4= (TextView) findViewById(R.id.bo4);
bo5= (TextView) findViewById(R.id.bo5);
bo6= (TextView) findViewById(R.id.bo6);
bo7= (TextView) findViewById(R.id.bo7);
bo8= (TextView) findViewById(R.id.bo8);
bo9= (TextView) findViewById(R.id.bo9);
}
publicstaticclassIntenetUtil {
//沒有網(wǎng)絡(luò)連接
publicstaticfinalintNETWORN_NONE=0;
//wifi連接
publicstaticfinalintNETWORN_WIFI=1;
//手機(jī)網(wǎng)絡(luò)數(shù)據(jù)連接類型
publicstaticfinalintNETWORN_2G=2;
publicstaticfinalintNETWORN_3G=3;
publicstaticfinalintNETWORN_4G=4;
publicstaticfinalintNETWORN_MOBILE=5;
/**
*獲取當(dāng)前網(wǎng)絡(luò)連接類型
*
*@paramcontext
*@return
*/
publicstaticintgetNetworkState(Context context) {
//獲取系統(tǒng)的網(wǎng)絡(luò)服務(wù)
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//如果當(dāng)前沒有網(wǎng)絡(luò)
if(null== connManager)
returnNETWORN_NONE;
//獲取當(dāng)前網(wǎng)絡(luò)類型,如果為空,返回?zé)o網(wǎng)絡(luò)
NetworkInfo activeNetInfo = connManager.getActiveNetworkInfo();
if(activeNetInfo ==null|| !activeNetInfo.isAvailable()) {
returnNETWORN_NONE;
}
//判斷是不是連接的是不是wifi
NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(null!= wifiInfo) {
NetworkInfo.State state = wifiInfo.getState();
if(null!= state)
if(state == NetworkInfo.State.CONNECTED|| state == NetworkInfo.State.CONNECTING) {
returnNETWORN_WIFI;
}
}
//如果不是wifi,則判斷當(dāng)前連接的是運(yùn)營商的哪種網(wǎng)絡(luò)2g、3g、4g等
NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if(null!= networkInfo) {
NetworkInfo.State state = networkInfo.getState();
String strSubTypeName = networkInfo.getSubtypeName();
if(null!= state)
if(state == NetworkInfo.State.CONNECTED|| state == NetworkInfo.State.CONNECTING) {
switch(activeNetInfo.getSubtype()) {
//如果是2g類型
caseTelephonyManager.NETWORK_TYPE_GPRS://聯(lián)通2g
caseTelephonyManager.NETWORK_TYPE_CDMA://電信2g
caseTelephonyManager.NETWORK_TYPE_EDGE://移動(dòng)2g
caseTelephonyManager.NETWORK_TYPE_1xRTT:
caseTelephonyManager.NETWORK_TYPE_IDEN:
returnNETWORN_2G;
//如果是3g類型
caseTelephonyManager.NETWORK_TYPE_EVDO_A://電信3g
caseTelephonyManager.NETWORK_TYPE_UMTS:
caseTelephonyManager.NETWORK_TYPE_EVDO_0:
caseTelephonyManager.NETWORK_TYPE_HSDPA:
caseTelephonyManager.NETWORK_TYPE_HSUPA:
caseTelephonyManager.NETWORK_TYPE_HSPA:
caseTelephonyManager.NETWORK_TYPE_EVDO_B:
caseTelephonyManager.NETWORK_TYPE_EHRPD:
caseTelephonyManager.NETWORK_TYPE_HSPAP:
returnNETWORN_3G;
//如果是4g類型
caseTelephonyManager.NETWORK_TYPE_LTE:
returnNETWORN_4G;
default:
//中國移動(dòng) 聯(lián)通 電信 三種3G制式
if(strSubTypeName.equalsIgnoreCase("TD-SCDMA") || strSubTypeName.equalsIgnoreCase("WCDMA") || strSubTypeName.equalsIgnoreCase("CDMA2000")) {
returnNETWORN_3G;
}else{
returnNETWORN_MOBILE;
}
}
}
}
returnNETWORN_NONE;
}
}
}