获取当前网络状态

在我们写程序中经常会遇到需要显示当前网络状态

首先我们在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         }

猜你喜欢

转载自www.cnblogs.com/z-cg/p/12363888.html