Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android中Wifi/3G網絡連接

Android中Wifi/3G網絡連接

編輯:Android開發教程

獲取網絡連接狀態

隨著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 calling

Context.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網絡設置界面  
    }

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved