Android之判斷設備網絡連接狀態,并判斷連接方式

jopen 11年前發布 | 26K 次閱讀 Android Android開發 移動開發

      在Android開發過程中,對于一個需要連接網絡的Android設備,對設備的網絡狀態檢測是很有必要的!有很多的App都需要連接網絡。判斷設備是否已經連接網絡,并且在連接網絡的狀態下判斷是wifi無線連接還是GPRS手機網絡連接,這樣就可以在不同的網絡連接下去調用不同的方法,處理不同的事情。這些功能都寫在了下面的代碼中了!請看主要代碼如下:

     

    /** 
      * 檢測網絡是否連接 
      * @return 
      */  
     private boolean checkNetworkState() {  
             boolean flag = false;  
             //得到網絡連接信息  
             manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);  
             //去進行判斷網絡是否連接  
             if (manager.getActiveNetworkInfo() != null) {  
                     flag = manager.getActiveNetworkInfo().isAvailable();  
             }  
             if (!flag) {  
                     setNetwork();  
             } else {  
                     isNetworkAvailable();  
             }  

             return flag;  
     }  


     /** 
      * 網絡未連接時,調用設置方法 
      */  
     private void setNetwork(){  
             Toast.makeText(this, "wifi is closed!", Toast.LENGTH_SHORT).show();  

             AlertDialog.Builder builder = new AlertDialog.Builder(this);  
             builder.setIcon(R.drawable.ic_launcher);  
             builder.setTitle("網絡提示信息");  
             builder.setMessage("網絡不可用,如果繼續,請先設置網絡!");  
             builder.setPositiveButton("設置", new OnClickListener() {  
                     @Override  
                     public void onClick(DialogInterface dialog, int which) {  
                             Intent intent = null;  
                             /** 
                              * 判斷手機系統的版本!如果API大于10 就是3.0+ 
                              * 因為3.0以上的版本的設置和3.0以下的設置不一樣,調用的方法不同 
                              */  
                             if (android.os.Build.VERSION.SDK_INT > 10) {  
                                     intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);  
                             } else {  
                                     intent = new Intent();  
                                     ComponentName component = new ComponentName(  
                                                     "com.android.settings",  
                                                     "com.android.settings.WirelessSettings");  
                                     intent.setComponent(component);  
                                     intent.setAction("android.intent.action.VIEW");  
                             }  
                             startActivity(intent);  
                     }  
             });  

             builder.setNegativeButton("取消", new OnClickListener() {  
                     @Override  
                     public void onClick(DialogInterface dialog, int which) {  

                     }  
             });  
             builder.create();  
             builder.show();  
     }  

     /** 
      * 網絡已經連接,然后去判斷是wifi連接還是GPRS連接 
      * 設置一些自己的邏輯調用 
      */  
     private void isNetworkAvailable(){  

             State gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();  
         State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();  
         if(gprs == State.CONNECTED || gprs == State.CONNECTING){  
                 Toast.makeText(this, "wifi is open! gprs", Toast.LENGTH_SHORT).show();  
         }  
         //判斷為wifi狀態下才加載廣告,如果是GPRS手機網絡則不加載!  
         if(wifi == State.CONNECTED || wifi == State.CONNECTING){  
                 Toast.makeText(this, "wifi is open! wifi", Toast.LENGTH_SHORT).show();  
                 loadAdmob();  
         }  

     }  

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!