Android編程獲取網絡鏈接狀態(3G/Wifi)及調用網絡配置界面

http://www.mobiletuts.mehtml

獲取網絡鏈接狀態java

隨着3G和Wifi的推廣,愈來愈多的Android應用程序須要調用網絡資源,檢測網絡鏈接狀態也就成爲網絡應用程序所必備的功能。android

Android平臺提供了ConnectivityManager  類,用於網絡鏈接狀態的檢測。編程

Android開發文檔這樣描述ConnectivityManager 的做用:安全

 

Class that answers queries about the state of network connectivity. It also notifies applications when network connectivity changes. Get an instance of this class by callingContext.getSystemService(Context.CONNECTIVITY_SERVICE).網絡

The primary responsibilities of this class are to:app

  1. Monitor network connections (Wi-Fi, GPRS, UMTS, etc.)ide

  2. Send broadcast intents when network connectivity changesthis

  3. Attempt to "fail over" to another network when connectivity to a network is lostspa

  4. Provide an API that allows applications to query the coarse-grained or fine-grained state of the available networks

下面這個簡單的例子 checkNetworkInfo() 說明了如何編程獲取Android手機的當前網絡狀態

複製代碼

privatevoid checkNetworkInfo()
{
ConnectivityManager conMan 
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

//mobile 3G Data Network
State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
txt3G.setText(mobile.toString()); //顯示3G網絡鏈接狀態
//wifi
State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
txtWifi.setText(wifi.toString()); //顯示wifi鏈接狀態

}

複製代碼

 

注:

根據Android的安全機制,在使用ConnectivityManager時,必須在AndroidManifest.xml中添加<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 不然沒法得到系統的許可。

運行結果(關閉3G及wifi網絡鏈接的狀態下)

調用Android手機的網絡配置界面

使用過Android手機上的手機QQ的朋友,應該知道,當QQ啓動時,若是沒有有效的網絡鏈接,QQ會提示轉入手機的網絡配置界面。這是如何實現的呢。其實很簡單啦

複製代碼

privatevoid checkNetworkInfo()
{
ConnectivityManager conMan 
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

//mobile 3G Data Network
State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
txt3G.setText(mobile.toString());
//wifi
State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
txtWifi.setText(wifi.toString());

//若是3G網絡和wifi網絡都未鏈接,且不是處於正在鏈接狀態 則進入Network Setting界面 由用戶配置網絡鏈接
if(mobile==State.CONNECTED||mobile==State.CONNECTING)
return;
if(wifi==State.CONNECTED||wifi==State.CONNECTING)
return;


startActivity(
new Intent(Settings.ACTION_WIRELESS_SETTINGS));//進入無線網絡配置界面
//startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //進入手機中的wifi網絡設置界面

}

複製代碼

運行結果(關閉3G及wifi網絡鏈接的狀態下),程序轉入無線網絡配置界面

startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));//進入無線網絡配置界面

若是調用

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接進入手機中的wifi網絡設置界面

則直接進入手機中的wifi網絡設置界面

在wifi網絡鏈接後 運行該程序

咱們能夠看到 wi-fi 狀態爲已鏈接(CONNECTED).

個人聯繫方式:

http://www.mobiletuts.me

mobiletuts.me#gmail.com (replace #with @)

相關文章
相關標籤/搜索