一.判断网络是否连接通
首先我们需要在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