Проверка статуса Интернет соединения
Главная » Проверка статуса Интернет соединения

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

Создаем новый проект, все названия я оставлю по умолчанию, вы можете присвоить свои, но потом не путайтесь. Создаем Blank Activity.

Сразу открываем файл манифеста AndroidManifest.xml и добавляем нашему приложению пару необходимых разрешений: на использование Интернет, а также на проверку статуса соединения:

!-- Разрешение на Интернет -->
 <uses-permission android:name="android.permission.INTERNET" />

<!-- Разрешение на получения статуса соединения -->
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Теперь нам нужно создать новый java класс. Когда мы хотим проверить статус Интернет соединения, мы вызываем функцию isConnectingToInternet, которая возвратит значение true или false. Проверка статуса соединения будет происходить при нажатии на кнопку. Создаем новый класс по имени ConnectionDetector.java и добавляем следующий код:

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class ConnectionDetector {

 private Context _context;

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

 public boolean ConnectingToInternet(){
 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;
 }
}

Теперь перейдем в файл activity_main.xml и создадим там кнопку, при нажатии на которую и будет происходить проверка:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity">
 <TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="Определяем статус Интернет соединения" />
 
 <Button android:id="@+id/btn_check"
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:text="Проверить статус соединения"
 android:layout_centerInParent="true"/>
</RelativeLayout>

Ну и выполняем последний шаг, открываем файл MainActivity.java и добавляем сюда AlertDialog, в котором и будет отображаться полученный ответ на запрос о состоянии Интернет соединения на испытуемом устройстве:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

 //Логическая переменная для статуса соединения
 Boolean isInternetPresent = false;
 ConnectionDetector cd;

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 Button btnStatus = (Button) findViewById(R.id.btn_check);

 //Создаем пример класса connection detector:
 cd = new ConnectionDetector(getApplicationContext());

 /**
 * Нажатием на кнопку проверяем статус Интернет соединения:
 **/
 btnStatus.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View v) {

 //Получаем статус Интернет
 isInternetPresent = cd.ConnectingToInternet();

 //Проверяем Интернет статус:
 if (isInternetPresent) {
 //Интернет соединение есть
 //делаем HTTP запросы:
 showAlertDialog(MainActivity.this, "Интернет соединение",
 "У вас есть Интернет соединение", true);
 } else {
 //Интернет соединения нет
 //просим пользователя подключить Интернет:
 showAlertDialog(MainActivity.this, "Интернет соединение отсутствует",
 "У вас нет Интернет соединения", false);
 }
 }

 });

 }

 /**
 * Функции для отображения простого Alert Dialog
 * @param context - содержимое приложения
 * @param title - название alert dialog 
 * @param message - сообщение
 * @param status - успех/неудача (используется для настройки иконки)
 * */
 public void showAlertDialog(Context context, String title, String message, Boolean status) {
 AlertDialog alertDialog = new AlertDialog.Builder(context).create();

 //Настраиваем название Alert Dialog: 
 alertDialog.setTitle(title);

 //Настраиваем сообщение:
 alertDialog.setMessage(message);

 //Настраиваем иконки, можете выбрать другие или добавить свои (мне лень):
 alertDialog.setIcon((status) ? R.drawable.ic_launcher : R.drawable.ic_launcher);

 //Настраиваем кнопку OK
 alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialog, int which) {
 }
 });

 //Отображаем сообщение диалога:
 alertDialog.show();
 }
}

Вот и все, приложение готово к тестированию. Запускаем приложение и смотрим, что у нас получилось:

Проверка статуса Интернет

Работает!

Категория: Уроки программирования | Просмотров: 1501 | Добавил: Oleg | Теги: Интернет, Интернет соединение, тест сети, Android программирование | Рейтинг: 5.0/2
Всего комментариев: 2
avatar
1 ru79250033010 • 01:32, 14.09.2015
А как сделать автоматическую проверку? Например для приложений которые загружают мобильные сайты? Типо if internet_ok (webview ...)
else ( нет инета... )
avatar
2 frike • 17:33, 05.10.2015
Отлично. Уже встроил в приложение. Всё работает  smile
avatar