Android編程擷取網路連接狀態及調用網路設定介面

來源:互聯網
上載者:User

標籤:

擷取網路連接狀態

隨著3G和Wifi的推廣,越來越多的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:

Monitor network connections (Wi-Fi, GPRS, UMTS, etc.) Send broadcast intents when network connectivity changes Attempt to "fail over" to another network when connectivity to a network is lost

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

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

private void 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會提示轉入手機的網路設定介面。這是如何?的呢。其實很簡單啦

private void 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).

 

Android編程擷取網路連接狀態及調用網路設定介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.