在我們寫程序中經常會遇到需要顯示當前網絡狀態
首先我們在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 }