Android ConnectivityManager 網絡連接

 

getSystemService是Android很重要的一個API,它是Activity的一個方法,根據傳入的NAME來取得對應的Object,然後轉換成相應的服務對象。以下介紹系統相應的服務。

 

      傳入的Name                          |             返回的對象                 |                   說明

WINDOW_SERVICE                                WindowManager                    管理打開的窗口程序

LAYOUT_INFLATER_SERVICE              LayoutInflater                          取得xml裏定義的view

ACTIVITY_SERVICE                               ActivityManager                      管理應用程序的系統狀態

POWER_SERVICE                                  PowerManger                         電源的服務

ALARM_SERVICE                                  AlarmManager                         鬧鐘的服務

NOTIFICATION_SERVICE                     NotificationManager                狀態欄的服務

KEYGUARD_SERVICE                           KeyguardManager                  鍵盤鎖的服務

LOCATION_SERVICE                            LocationManager                    位置的服務,如GPS

SEARCH_SERVICE                               SearchManager                       搜索的服務

VEBRATOR_SERVICE                          Vebrator                                   手機震動的服務

CONNECTIVITY_SERVICE                   Connectivity                             網絡連接的服務

WIFI_SERVICE                                     WifiManager                             Wi-Fi服務

TELEPHONY_SERVICE                        TeleponyManager                   電話服務

 

 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

=============================================================================

 

/**
  * 測試ConnectivityManager
  * ConnectivityManager主要管理和網絡連接相關的操作
  * 相關的TelephonyManager則管理和手機、運營商等的相關信息;WifiManager則管理和wifi相關的信息。
  * 想訪問網絡狀態,首先得添加權限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
  * NetworkInfo類包含了對wifi和mobile兩種網絡模式連接的詳細描述,通過其getState()方法獲取的State對象則代表着
  * 連接成功與否等狀態。
  * 
  */
 public void testConnectivityManager() {
  ConnectivityManager connManager = (ConnectivityManager) this
    .getSystemService(CONNECTIVITY_SERVICE);
  // 獲取代表聯網狀態的NetWorkInfo對象
  NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
  // 獲取當前的網絡連接是否可用
  boolean available = networkInfo.isAvailable();
  if(available){
   Log.i("通知", "當前的網絡連接可用");
  }
  else{
   Log.i("通知", "當前的網絡連接可用");
  }

  State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
  if(State.CONNECTED==state){
   Log.i("通知", "GPRS網絡已連接");
  }
  
  state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
  if(State.CONNECTED==state){
   Log.i("通知", "WIFI網絡已連接");
  }
  
  // 跳轉到無線網絡設置界面
  startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
  // 跳轉到無限wifi網絡設置界面
  startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
  
 }

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------

Context context = listActivity.getApplicationContext();//獲取應用上下文
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);//獲取系統的連接服務
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();//獲取網絡的連接情況
if(activeNetInfo.getType()==ConnectivityManager.TYPE_WIFI){
//判斷WIFI網
}else if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) {
//判斷3G網
}

 

NetWorkInfo類的主要方法示例:

 



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章