2014-09-05 15 views
5

tôi đang làm việc trên một ứng dụng thư viện hình ảnh, trong đó ứng dụng đang truy xuất hình ảnh từ internet.yêu cầu người dùng kết nối với internet hoặc thoát ứng dụng (android)

vì vậy tôi muốn nhắc hộp thoại yêu cầu người dùng kết nối với internet hoặc thoát ứng dụng.

hiển thị cho người dùng cả tùy chọn mạng WiFi và mạng di động.

+0

Đơn giản như vậy, chỉ cần kiểm tra xem có kết nối mạng đang hoạt động hay không. Nếu không, hãy hiển thị yes | no Dialog. Nếu dương, thì hãy hiển thị cài đặt Mạng. Khác, kết thúc hoạt động. –

Trả lời

5

này kiểm tra cho cả hai wifi và dữ liệu di động .. chạy mã tis trên splash hoặc hoạt động chính của bạn để kiểm tra kết nối mạng.popup hộp thoại nếu mạng không được kết nối và kết thúc hoạt động. Nó đơn giản là

private boolean haveNetworkConnection() { 
    boolean haveConnectedWifi = false; 
    boolean haveConnectedMobile = false; 

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo[] netInfo = cm.getAllNetworkInfo(); 
    for (NetworkInfo ni : netInfo) { 
     if (ni.getTypeName().equalsIgnoreCase("WIFI")) 
      if (ni.isConnected()) 
       haveConnectedWifi = true; 
     if (ni.getTypeName().equalsIgnoreCase("MOBILE")) 
      if (ni.isConnected()) 
       haveConnectedMobile = true; 
    } 
    return haveConnectedWifi || haveConnectedMobile; 
} 
+0

Điều gì sẽ xảy ra nếu tôi muốn kiểm tra kết nối internet trong mỗi đoạn (nói cách khác, trong mỗi trang giao diện người dùng). Cho phép nói đầu tiên tôi nhấp vào hình ảnh và tôi thấy hình ảnh lớn, nhưng bây giờ nếu kết nối internet bị mất, tôi nên thông báo cho người dùng. Nơi để đặt mã này, để tôi kiểm tra kết nối internet trong tất cả các màn hình? – user3705478

+0

tạo ra một lớp util phổ biến và truy cập nó từ đó. Ngoài ra bạn có thể tạo ra một phát sóng và lắng nghe thay đổi mạng bất cứ nơi nào bạn muốn. –

2

Trước tiên, bạn nên kiểm tra xem họ đã được kết nối hay không (tấn ví dụ làm thế nào để làm điều này trực tuyến)

Nếu không, sau đó sử dụng mã này

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setMessage("Connect to wifi or quit") 
.setCancelable(false) 
.setPositiveButton("Connect to WIFI", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); 
    } 
}) 
.setNegativeButton("Quit", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     this.finish(); 
    } 
}); 
AlertDialog alert = builder.create(); 
alert.show(); 
1
//Checking For Internet Connection 
ConnectionDetector cd = new ConnectionDetector(getApplicationContext()); 

    // Check if Internet present 
    if (!cd.isConnectingToInternet()) { 
     // Internet Connection is not present 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("Connect to wifi or quit") 
     .setCancelable(false) 
     .setPositiveButton("Connect to WIFI", new DialogInterface.OnClickListener() { 

       public void onClick(DialogInterface dialog, int id) { 
        startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); 
       } 
     }) 
     .setNegativeButton("Quit", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
       this.finish(); 
     } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 

    return; 
    } 
+1

Chúng ta nên kết hợp câu trả lời của chúng tôi lol – MobileMon

+0

tôi đã suy nghĩ tương tự .... Lol .. –

4

Hãy thử cách này:

public static boolean isConnected(Context context){ 
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
NetworkInfo mobileInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

if ((wifiInfo != null && wifiInfo.isConnected()) || (mobileInfo != null && mobileInfo.isConnected())) { 
     return true; 
}else{ 
     showDialog(); 
     return false; 
} 

private void showDialog() 
{ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("Connect to wifi or quit") 
     .setCancelable(false) 
     .setPositiveButton("Connect to WIFI", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); 
      } 
     }) 
     .setNegativeButton("Quit", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       this.finish(); 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
} 
+0

Bạn đã sao chép câu trả lời của tôi ......... – MobileMon

+0

vâng ... một phần của nó ... –

+0

vậy tại sao không chỉnh sửa của tôi và xây dựng trên nó? – MobileMon

0

Đây là cách thực hiện.

lớp này kiểm tra cho một kết nối internet hợp lệ:

public class ConnectionStatus { 

    private Context _context; 

    public ConnectionStatus(Context context) { 
     this._context = context; 
    } 

    public boolean isConnectionAvailable() { 
     ConnectivityManager connectivity = (ConnectivityManager) _context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
         return true; 
        } 
     } 
     return false; 
    } 
} 

Các phương pháp sau đây sẽ mở bảng điều khiển wi-fi nếu không có kết nối internet hợp lệ:

public void addListenerOnWifiButton() { 
     Button btnWifi = (Button)findViewById(R.id.btnWifi); 

     iia = new ConnectionStatus(getApplicationContext()); 

     isConnected = iia.isConnectionAvailable(); 
     if (!isConnected) { 
      btnWifi.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); 
        Toast.makeText(getBaseContext(), "Please connect to a hotspot", 
          Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 
     else { 
      btnWifi.setVisibility(4); 
      warning.setText("This app may use your mobile data to update events and get their details."); 
     } 
    } 

Các phương pháp sau đây sẽ mở ra 3G bảng điều khiển nếu không có kết nối internet hợp lệ:

public void addListenerOn3GButton() { 
    Button btnThreeGee = (Button)findViewById(R.id.btn3G); 
    iia = new ConnectionStatus(getApplicationContext()); 

    isConnected = iia.isConnectionAvailable(); 
    if (!isConnected) { 
     btnThreeGee.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)); 
      Toast.makeText(getBaseContext(), "Please check 'Data enabled' option", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    } 
    else { 

     btnThreeGee.setVisibility(4); 
     cont.setVisibility(View.VISIBLE); 
     warning.setText("This app may use your mobile data to update events and get their details."); 
     } 
} 

Hy vọng điều này sẽ giúp :)

+0

Xin chào, bạn có ý tưởng về cách mở lời nhắc cài đặt chuyển vùng dữ liệu khi loại hộp thoại bật/tắt tương tự như lời nhắc Bluetooth/GPS không? Câu trả lời của bạn hoạt động tốt nhưng nó sẽ mở ra một hoạt động mới thay vì chỉ là một hộp thoại nhỏ làm suy giảm trải nghiệm người dùng. – Razgriz

+0

Tôi nghĩ câu trả lời [this] (http://stackoverflow.com/a/15456565/1116216) sẽ giúp bạn đạt được những gì bạn cần. –

+1

Điều tôi muốn nói là một hộp thoại sẽ xuất hiện và nhấp vào Ok/Có/etc sẽ tự động bật Dữ liệu di động. Tương tự như cách bạn được nhắc bật Bluetooth bằng hộp thoại và nếu bạn nhấp vào có, bluetooth của bạn sẽ tự động bật. Hoặc cách mở bản đồ google cho thấy "Cho phép ứng dụng này sử dụng vị trí của bạn?" và nhấp vào có sẽ bật cài đặt vị trí của bạn.Không nhấp vào có và được hiển thị một hoạt động mới. – Razgriz

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