Android позволяет вашему приложению подключаться к Интернету или любой другой локальной сети и позволяет выполнять сетевые операции.
Устройство может иметь различные типы сетевых подключений. Эта глава посвящена использованию Wi-Fi или мобильной сети.
Проверка сетевого подключения
Прежде чем выполнять какие-либо сетевые операции, вы должны сначала проверить, подключены ли вы к этой сети или Интернету и т. Д. Для этого андроида предусмотрен класс ConnectivityManager . Вам нужно создать экземпляр объекта этого класса, вызвав метод getSystemService () . Его синтаксис приведен ниже —
ConnectivityManager check = (ConnectivityManager) this.context.getSystemService(Context.CONNECTIVITY_SERVICE);
После создания экземпляра объекта класса ConnectivityManager вы можете использовать метод getAllNetworkInfo для получения информации обо всех сетях. Этот метод возвращает массив NetworkInfo . Таким образом, вы должны получить это так.
NetworkInfo[] info = check.getAllNetworkInfo();
Последнее, что вам нужно сделать, это проверить состояние подключения к сети. Его синтаксис приведен ниже —
for (int i = 0; i <info.length; i ++) { if (info [i] .getState () == NetworkInfo.State.CONNECTED) { Toast.makeText (контекст, «Интернет подключен» Toast.LENGTH_SHORT) .show (); } }
Помимо этих связанных состояний существуют и другие состояния, которых может достичь сеть. Они перечислены ниже —
Sr.No | государственный |
---|---|
1 | соединительный |
2 | Отключенные |
3 | Отсоединение |
4 | подвешенный |
5 | неизвестный |
Выполнение сетевых операций
После проверки того, что вы подключены к Интернету, вы можете выполнить любую сетевую операцию. Здесь мы получаем html сайта с URL.
Android предоставляет HttpURLConnection и URL- класс для обработки этих операций. Вам необходимо создать экземпляр объекта класса URL, указав ссылку на веб-сайт. Его синтаксис выглядит следующим образом —
String link = "http://www.google.com"; URL url = new URL(link);
После этого вам нужно вызвать метод openConnection класса url и получить его в объекте HttpURLConnection. После этого вам нужно вызвать метод connect класса HttpURLConnection.
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect();
И последнее, что вам нужно сделать, это получить HTML-код с веб-сайта. Для этого вы будете использовать класс InputStream и BufferedReader . Его синтаксис приведен ниже —
InputStream is = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String webPage = "",data=""; while ((data = reader.readLine()) != null){ webPage += data + "\n"; }
Помимо этого метода соединения, в классе HttpURLConnection доступны и другие методы. Они перечислены ниже —
Sr.No | Метод и описание |
---|---|
1 |
Отключить() Этот метод освобождает это соединение, так что его ресурсы могут быть повторно использованы или закрыты |
2 |
getRequestMethod () Этот метод возвращает метод запроса, который будет использоваться для отправки запроса на удаленный HTTP-сервер. |
3 |
getResponseCode () Этот метод возвращает код ответа, возвращенный удаленным HTTP-сервером |
4 |
setRequestMethod (метод String) Этот метод устанавливает команду запроса, которая будет отправлена на удаленный HTTP-сервер. |
5 |
usingProxy () Этот метод возвращает, использует ли это соединение прокси-сервер или нет |
Отключить()
Этот метод освобождает это соединение, так что его ресурсы могут быть повторно использованы или закрыты
getRequestMethod ()
Этот метод возвращает метод запроса, который будет использоваться для отправки запроса на удаленный HTTP-сервер.
getResponseCode ()
Этот метод возвращает код ответа, возвращенный удаленным HTTP-сервером
setRequestMethod (метод String)
Этот метод устанавливает команду запроса, которая будет отправлена на удаленный HTTP-сервер.
usingProxy ()
Этот метод возвращает, использует ли это соединение прокси-сервер или нет
пример
Приведенный ниже пример демонстрирует использование класса HttpURLConnection. Он создает базовое приложение, которое позволяет загружать HTML с заданной веб-страницы.
Чтобы поэкспериментировать с этим примером, вам нужно запустить его на реальном устройстве, к которому подключен интернет Wi-Fi.
меры | Описание |
---|---|
1 | Вы будете использовать Android Studio IDE для создания приложения Android в пакете com.tutorialspoint.myapplication. |
2 | Измените файл src / MainActivity.java, чтобы добавить код активности. |
4 | Измените XML-файл макета. Res / layout / activity_main.xml добавьте любой компонент GUI, если это необходимо. |
6 | Измените AndroidManifest.xml, чтобы добавить необходимые разрешения. |
7 | Запустите приложение и выберите работающее устройство Android, установите на него приложение и проверьте результаты. |
Вот содержание src / MainActivity.java .
package com.tutorialspoint.myapplication; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.ConnectivityManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class MainActivity extends ActionBarActivity { private ProgressDialog progressDialog; private Bitmap bitmap = null; Button b1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button) findViewById(R.id.button); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { checkInternetConenction(); downloadImage("http://www.tutorialspoint.com/green/images/logo.png"); } }); } private void downloadImage(String urlStr) { progressDialog = ProgressDialog.show(this, "", "Downloading Image from " + urlStr); final String url = urlStr; new Thread() { public void run() { InputStream in = null; Message msg = Message.obtain(); msg.what = 1; try { in = openHttpConnection(url); bitmap = BitmapFactory.decodeStream(in); Bundle b = new Bundle(); b.putParcelable("bitmap", bitmap); msg.setData(b); in.close(); }catch (IOException e1) { e1.printStackTrace(); } messageHandler.sendMessage(msg); } }.start(); } private InputStream openHttpConnection(String urlStr) { InputStream in = null; int resCode = -1; try { URL url = new URL(urlStr); URLConnection urlConn = url.openConnection(); if (!(urlConn instanceof HttpURLConnection)) { throw new IOException("URL is not an Http URL"); } HttpURLConnection httpConn = (HttpURLConnection) urlConn; httpConn.setAllowUserInteraction(false); httpConn.setInstanceFollowRedirects(true); httpConn.setRequestMethod("GET"); httpConn.connect(); resCode = httpConn.getResponseCode(); if (resCode == HttpURLConnection.HTTP_OK) { in = httpConn.getInputStream(); } }catch (MalformedURLException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } return in; } private Handler messageHandler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); ImageView img = (ImageView) findViewById(R.id.imageView); img.setImageBitmap((Bitmap) (msg.getData().getParcelable("bitmap"))); progressDialog.dismiss(); } }; private boolean checkInternetConenction() { // get Connectivity Manager object to check connection ConnectivityManager connec =(ConnectivityManager)getSystemService(getBaseContext().CONNECTIVITY_SERVICE); // Check for network connections if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED || connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING || connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING || connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) { Toast.makeText(this, " Connected ", Toast.LENGTH_LONG).show(); return true; }else if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED ) { Toast.makeText(this, " Not Connected ", Toast.LENGTH_LONG).show(); return false; } return false; } }
Вот содержание activity_main.xml .
<?xml version="1.0" encoding="utf-8"?> <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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="UI Animator Viewer" android:id="@+id/textView" android:textSize="25sp" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point" android:id="@+id/textView2" android:layout_below="@+id/textView" android:layout_alignRight="@+id/textView" android:layout_alignEnd="@+id/textView" android:textColor="#ff36ff15" android:textIsSelectable="false" android:textSize="35dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:layout_below="@+id/textView2" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:id="@+id/button" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:layout_marginTop="76dp" /> </RelativeLayout>
Вот содержимое Strings.xml .
<resources> <string name="app_name">My Application</string> </resources>
Вот содержание AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tutorialspoint.myapplication" > <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Давайте попробуем запустить ваше приложение. Я предполагаю, что вы подключили свое фактическое мобильное устройство Android к компьютеру. Чтобы запустить приложение из Android Studio, откройте один из файлов деятельности вашего проекта и нажмите «Выполнить». значок из панели инструментов. Перед запуском приложения Android Studio отобразит следующее окно, чтобы выбрать опцию, в которой вы хотите запустить приложение Android.
Выберите мобильное устройство в качестве опции, а затем проверьте свое мобильное устройство, которое отобразит следующий экран —
Теперь просто нажмите на кнопку, он проверит подключение к интернету, а также загрузит изображение.
Выход будет следующим: он получит логотип из интернета.