Android判斷當前網路是否可用--範例程式碼

來源:互聯網
上載者:User

在Android平台上開發基於網路的應用,必然需要去判斷當前的網路連接情況。下面的代碼,作為例子,詳細說明了對於當前網路情況的判斷。

 

先看一個自己定義的應用類。

 

view plaincopy to clipboardprint?
public class NetworkDetector {  
   
    public static boolean detect(Activity act) {  
        
       ConnectivityManager manager = (ConnectivityManager) act  
              .getApplicationContext().getSystemService(  
                     Context.CONNECTIVITY_SERVICE);  
        
       if (manager == null) {  
           return false;  
       }  
        
       NetworkInfo networkinfo = manager.getActiveNetworkInfo();  
        
       if (networkinfo == null || !networkinfo.isAvailable()) {  
           return false;  
       }  
   
       return true;  
    }  

public class NetworkDetector {
 
    public static boolean detect(Activity act) {
     
       ConnectivityManager manager = (ConnectivityManager) act
              .getApplicationContext().getSystemService(
                     Context.CONNECTIVITY_SERVICE);
     
       if (manager == null) {
           return false;
       }
     
       NetworkInfo networkinfo = manager.getActiveNetworkInfo();
     
       if (networkinfo == null || !networkinfo.isAvailable()) {
           return false;
       }
 
       return true;
    }
}

 

這個類只有一個靜態方法,用來檢測當前系統的網路是否可用。如果可用,返回true。

還要進一步說明的是,NetworkInfo類中有一個方法getType(),這個方法可以用來判斷當前可用的網路是wifi,還是mobile等等。

 

再來看使用的例子。

 

view plaincopy to clipboardprint?
boolean networkState = NetworkDetector.detect(XXXActivity.this);  
if (!networkState) {  
    DialogUtil.openMsgDialog(XXXActivity.this,  
           android.R.drawable.ic_dialog_info,  
           “網路不可用,是否現在設定網路?”, android.R.string.ok,  
           android.R.string.cancel,  
           new DialogInterface.OnClickListener() {  
              @Override 
              public void onClick(DialogInterface dialog, int which) {  
                  startActivityForResult(new Intent(  
                         ACTION_WIRELESS_SETTINGS), 0);  
              }  
           }, new DialogInterface.OnClickListener() {  
              @Override 
              public void onClick(DialogInterface dialog, int which) {  
                  dialog.cancel();  
              }  
           }).show();  

       boolean networkState = NetworkDetector.detect(XXXActivity.this);
       if (!networkState) {
           DialogUtil.openMsgDialog(XXXActivity.this,
                  android.R.drawable.ic_dialog_info,
                  “網路不可用,是否現在設定網路?”, android.R.string.ok,
                  android.R.string.cancel,
                  new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         startActivityForResult(new Intent(
                                ACTION_WIRELESS_SETTINGS), 0);
                     }
                  }, new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         dialog.cancel();
                     }
                  }).show();
       }

 

其中XXXActivity是我自己

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.