2014-09-05 2 views
5

Я работаю над приложением галереи изображений, в котором приложение извлекает изображения из Интернета.попросить пользователя подключиться к Интернету или закрыть приложение (android)

поэтому я хочу предложить диалоговое окно, чтобы попросить пользователя подключиться к Интернету или выйти из приложения.

показать пользователю как WiFi, так и опцию сети.

+0

Насколько это просто, просто проверьте, есть ли активное сетевое соединение. Если нет, покажите диалог «Да | нет». Если это положительно, то покажите настройки сети. Иначе, закончить деятельность. –

ответ

5

это проверяет для обоих Wi-Fi и мобильные данные. Используйте этот код на всплеске или вашем основном действии, чтобы проверить подключение к сети. Поставьте диалог, если сеть не подключена и не завершит операцию. Это так просто.

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

Что делать, если я хочу проверить подключение к интернету в каждом фрагменте (другими словами, на каждой странице пользовательского интерфейса). Давайте сначала скажем изображение, и я вижу большое изображение, но теперь, если интернет-соединение потеряно, я должен уведомить пользователя. Где разместить этот код, чтобы я проверял подключение к Интернету на всех экранах? – user3705478

+0

создайте общий класс util и получите доступ к нему оттуда. Также вы можете создавать трансляцию и слушать сетевые изменения везде, где хотите. –

2

Во-первых, вы должны проверить, если они уже подключены или нет (тонны примеров, как сделать это онлайн)

Если нет, то используйте этот код

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

Мы должны объединить наши ответы lol – MobileMon

+0

Я думал о том же .... Lol .. –

4

Попробуйте это:

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

Вы скопировали мой ответ ......... – MobileMon

+0

да ... его часть ... –

+0

так почему бы не изменить мою и не построить на ней? – MobileMon

0

Это так, как это делается.

Этот класс проверяет действительное подключение к Интернету:

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; 
    } 
} 

Следующий метод открывает панель вай-фай, если нет правильного подключения к Интернету:

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."); 
     } 
    } 

Следующий метод открывает 3G если нет действующего интернет-соединения:

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."); 
     } 
} 

Надеюсь, что это поможет :)

+0

Эй, если бы у вас появилась идея о том, как открыть подсказку настроек роуминга данных, как включить или отключить тип диалога, аналогичный подсказке Bluetooth/GPS? Ваш ответ работает отлично, но он открывает новую деятельность, а не просто небольшой диалог, который нарушает работу пользователя. – Razgriz

+0

Я думаю, что [это] (http://stackoverflow.com/a/15456565/1116216) ответ поможет вам достичь того, что вам нужно. –

+1

Я имел в виду, что появится диалоговое окно, и нажатие кнопки «ОК»/«Да»/«) автоматически включит« Мобильные данные ». Подобно тому, как вы получаете запрос на включение Bluetooth с диалоговым окном, и если вы нажмете «да», ваш Bluetooth автоматически включится. Или как открытие карт Google показывает, что «разрешить этому приложению использовать ваше местоположение?» и нажатие «да» включит ваши настройки местоположения.Не нажимайте «Да» и показывайте новую активность. – Razgriz

 Смежные вопросы

  • Нет связанных вопросов^_^