判断网络状态

来源:互联网 发布:windows 粘滞键 编辑:程序博客网 时间:2024/06/03 12:10
/////添加权限  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Bundle;import android.telephony.TelephonyManager;import android.util.Log;import android.view.View;import android.widget.Toast;import com.bwie.skn.anr_demo.R;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void checkMobileNet(View v) { // 1.检测手机是否处于联网状态 // 1.得到系统服务ConnectivityManager ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // 2.得到网络信息类对象 NetworkInfo networkInfo = manager.getActiveNetworkInfo(); // 3.进行判断 if (networkInfo != null && networkInfo.isConnected()) { Toast.makeText(this, "已连接互联网!", 0).show(); // 检测手机的网络类型 int type = networkInfo.getType();// 得到网络类型 switch (type) { case ConnectivityManager.TYPE_WIFI:// wifi网络 Toast.makeText(this, "wifi!", 0).show(); break; case ConnectivityManager.TYPE_MOBILE:// 移动数据 Toast.makeText(this, "移动数据!", 0).show(); // 2g 3g 4g getDetailMobileNetType(networkInfo); break; } } else { Toast.makeText(this, "未连接互联网!", 0).show(); AlertDialog.Builder buider=new Builder(this); buider.setTitle("网络连接设置"); buider.setMessage("未连接网络,是否要进行设置?"); buider.setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { //跳转到系统设置网络的界面 Intent intent=new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); startActivity(intent); } }); buider.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { } }); buider.create().show(); } } // 得到详细的网络类型 wap 2G/3G/4G网络 public void getDetailMobileNetType(NetworkInfo netInfo) { String strNetworkType = ""; // 得到整数类型 int subtype = netInfo.getSubtype(); // 得到名子 String _strSubTypeName = netInfo.getSubtypeName(); switch (subtype) { case TelephonyManager.NETWORK_TYPE_GPRS:// 联通2G case TelephonyManager.NETWORK_TYPE_EDGE:// 移动2G case TelephonyManager.NETWORK_TYPE_CDMA:// 电信2G case TelephonyManager.NETWORK_TYPE_1xRTT: case TelephonyManager.NETWORK_TYPE_IDEN: // api<8 : replace by 11 strNetworkType = "2G"; break; case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_EVDO_0: case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: case TelephonyManager.NETWORK_TYPE_EVDO_B: // api<9 : replace by 14 case TelephonyManager.NETWORK_TYPE_EHRPD: // api<11 : replace by 12 case TelephonyManager.NETWORK_TYPE_HSPAP: // api<13 : replace by 15 strNetworkType = "3G"; break; case TelephonyManager.NETWORK_TYPE_LTE: // api<11 : replace by 13 strNetworkType = "4G"; break; default: // http://baike.baidu.com/item/TD-SCDMA 中国移动 联通 电信 三种3G制式 if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA") || _strSubTypeName.equalsIgnoreCase("WCDMA") || _strSubTypeName.equalsIgnoreCase("CDMA2000")) { strNetworkType = "3G"; } else { strNetworkType = _strSubTypeName; } break; } Log.d("zzz", "网络类型是:" + strNetworkType); }}
原创粉丝点击