2012-04-27 35 views
12

Tôi đang thực hiện một ứng dụng sử dụng kết nối Internet thông qua ứng dụng. Nếu kết nối internet bị mất trong khi sử dụng ứng dụng, ứng dụng sẽ buộc phải đóng. Để tránh điều này, nếu không có internet, tôi muốn hiển thị thông báo Cảnh báo. Tôi có thể làm cái này như thế nào. Tại thời điểm Đăng nhập, tôi đang kiểm tra kết nối bằng cách sử dụng mã bên dưới. Nhưng làm thế nào tôi có thể làm điều này cho toàn bộ ứng dụng trong nền.Làm thế nào để kiểm tra kết nối Internet định kỳ trong toàn bộ ứng dụng?

private boolean haveInternet(){ 
     NetworkInfo info = ((ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 
     if (info==null || !info.isConnected()) { 
       return false; 
     } 
     if (info.isRoaming()) { 
       // here is the roaming option you can change it if you want to disable internet while roaming, just return false 
       return true; 
     } 
     return true; 
} 

Cảm ơn bạn ..

+0

@parag Bạn có thể cho tôi xem ví dụ về điều đó không? – wolverine

+0

@parag, ok Cảm ơn bạn. – wolverine

+0

Luôn chào mừng bạn bè –

Trả lời

39

Bạn nên thực hiện một BroadcastReceiver sẽ được kích hoạt khi trạng thái kết nối đã thay đổi:

 public class BroadCastSampleActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     this.registerReceiver(this.mConnReceiver, 
       new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
    } 
    private BroadcastReceiver mConnReceiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 
      String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON); 
      boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false); 

      NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); 
      NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO); 

      if(currentNetworkInfo.isConnected()){ 
       Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show(); 
      }else{ 
       Toast.makeText(getApplicationContext(), "Not Connected", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }; 
} 

và sau đó trong bạn AndroidManifest bạn có thể kiểm tra xem bạn có khả năng kết nối :

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

Tải xuống mã nguồn - here

+0

Tôi đã thêm mã này, nhưng không nhận được bất kỳ thông báo bánh mì nướng khi thay đổi mạng .. – wolverine

+0

Điều này hoạt động như một nét duyên dáng, công trình này .. – Darpan

+0

hey bạn đã kiểm tra một phương pháp RegisterReceiver khác với chữ ký (bộ thu, bộ lọc, Braodcastpermission, bộ xử lý)? nghi ngờ của tôi là, "quyền phát sóng" nào bạn sẽ sử dụng nếu bạn phải sử dụng nó để đăng ký người nhận này? – Darpan

Các vấn đề liên quan