Android判断网络类型

一.判断网络是否连接通

首先我们需要在AndroidManifest.xml文件中加入相应的权限。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

(ps:更多权限请查看我的博客http://www.cnblogs.com/zhaoyucong/p/6086687.html)

MainActivity.java

 1 public class MainActivity extends Activity {
 2     
 3     private Button but;//定义Button变量保存按钮控件
 4     
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         but = (Button) findViewById(R.id.but);//通过id找到按钮控件
10         but.setText("网络测试");//修改按钮内容
11         but.setOnClickListener(new OnClickListener() {
12 
13 //匿名内部类 14 public void onClick(View v) { 15 //检查用户的网络情况 16 ConnectivityManager mConnectivityManager =
17           (ConnectivityManager) MainActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE); 18 //返回当前可用网络信息 19 NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); 20 21 if(mNetworkInfo!=null){ 22 Toast.makeText(MainActivity.this,"网络正常",Toast.LENGTH_SHORT).show(); 23 }else{ 24 Toast.makeText(MainActivity.this,"无网络",Toast.LENGTH_SHORT).show(); 25 } 26 } 27 }); 28 } 29 }

 二.判断网络类型

MainActivity.java

1 //返回当前可用网络信息  
2 NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); 
3 //mNetworkInfo.getTypeName()返回对应的网络类型名称
mNetworkInfo.getTypeName()方法的名称有如下5种网络类型:
MOBILE、WIFI 互联网
WIMAX 微波存取全球互通
ETHERNET 以太网
BLUETOOTH 蓝牙

 三.判断网络是(2G/3G/4G)

 MainActivity.java

1 TelephonyManager telephonyManager = (TelephonyManager)MainActivity.this.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getNetworkType()方法返回的是个数值
以下是各种网络类型:
2G:
TelephonyManager.NETWORK_TYPE_GPRS
TelephonyManager.NETWORK_TYPE_EDGE
TelephonyManager.NETWORK_TYPE_CDMA
TelephonyManager.NETWORK_TYPE_1xRTT
TelephonyManager.NETWORK_TYPE_IDEN
telephonyManager.getNetworkType()//api<9 : replace by 14
3G
TelephonyManager.NETWORK_TYPE_UMTS
TelephonyManager.NETWORK_TYPE_EVDO_0
TelephonyManager.NETWORK_TYPE_EVDO_A
TelephonyManager.NETWORK_TYPE_HSDPA
TelephonyManager.NETWORK_TYPE_HSUPA
TelephonyManager.NETWORK_TYPE_HSPA
TelephonyManager.NETWORK_TYPE_EVDO_B//api<9 : replace by 14
TelephonyManager.NETWORK_TYPE_EHRPD//api<11 : replace by 12
TelephonyManager.NETWORK_TYPE_HSPAP//api<13 : replace by 15
4G
TelephonyManager.NETWORK_TYPE_LTE//api<11 : replace by 13
 
原文地址:https://www.cnblogs.com/zhaoyucong/p/6085893.html