在我们写程序中经常会遇到需要显示当前网络状态
首先我们在xml文件中定义两个TextView来显示当前移动网络的状态和WiFi的状态
代码为
1 <TextView 2 android:id="@+id/wifi" 3 android:textSize="20sp" 4 android:layout_width="wrap_content" 5 android:layout_height="wrap_content" 6 android:text="显示网络状态!" 7 android:layout_alignParentTop="true" 8 android:layout_alignLeft="@+id/gprs" 9 android:layout_alignStart="@+id/gprs" 10 android:layout_marginTop="69dp" /> 11 <TextView 12 android:id="@+id/gprs" 13 android:textSize="20sp" 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:text="显示网络状态!" 17 android:layout_alignParentBottom="true" 18 android:layout_centerHorizontal="true" 19 android:layout_marginBottom="209dp" />
接下来是初始化控件
1 private TextView wifi = (TextView) findViewById(R.id.wifi); 2 private TextView gprs = (TextView) findViewById(R.id.gprs);
然后是初始化网络管理器
1 private ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
获得移动网络状态
1 NetworkInfo.State grasState = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
获得WiFi状态
1 NetworkInfo.State wifiState = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
把状态放在TextView中显示
1 wifi.setText("wifi的链接状态是" + wifiState.toString()); 2 gprs.setText("移动网络连接状态是" + grasState.toString());
一般应用程序是在无网络连接时会跳转到无线网络设置
首先添加一个内部类用来实现无网络时的操作
1 class MyTask extends TimerTask { 2 @Override 3 //隐式跳转到无线网络设置 4 public void run() { 5 Intent i = new Intent(); 6 i.setAction(Settings.ACTION_WIRELESS_SETTINGS); 7 startActivity(i); 8 }
然后在判断是否时无网络连接,在5秒后执行跳转操作
1 if (!grasState.toString().equals("CONNECTED") && !wifiState.toString().equals("CONNECTED")) { 2 Toast.makeText(MainActivity.this, "您的网络未连接,稍后将跳转到网络设置", Toast.LENGTH_SHORT).show(); 3 //定时器,延时5分钟执行 4 Timer time = new Timer(); 5 time.schedule(new MyTask(), 5000); 6 }
原文:https://www.cnblogs.com/z-cg/p/12363888.html