Android - Netzwerkverbindung

Mit Android kann Ihre Anwendung eine Verbindung zum Internet oder einem anderen lokalen Netzwerk herstellen und Netzwerkvorgänge ausführen.

Ein Gerät kann verschiedene Arten von Netzwerkverbindungen haben. Dieses Kapitel konzentriert sich auf die Verwendung einer Wi-Fi oder einer mobilen Netzwerkverbindung.

Überprüfen der Netzwerkverbindung

Bevor Sie Netzwerkvorgänge ausführen, müssen Sie zunächst überprüfen, ob Sie mit diesem Netzwerk oder Internet usw. verbunden sind ConnectivityManagerKlasse. Sie müssen ein Objekt dieser Klasse durch Aufrufen instanziierengetSystemService()Methode. Die Syntax ist unten angegeben -

ConnectivityManager check = (ConnectivityManager) 
this.context.getSystemService(Context.CONNECTIVITY_SERVICE);

Sobald Sie das Objekt der ConnectivityManager-Klasse instanziiert haben, können Sie es verwenden getAllNetworkInfoMethode, um die Informationen aller Netzwerke zu erhalten. Diese Methode gibt ein Array von zurückNetworkInfo. Also muss man es so erhalten.

NetworkInfo[] info = check.getAllNetworkInfo();

Das Letzte, was Sie tun müssen, ist zu überprüfen Connected Statedes Netzwerks. Die Syntax ist unten angegeben -

for (int i = 0; i<info.length; i++){
   if (info[i].getState() == NetworkInfo.State.CONNECTED){
      Toast.makeText(context, "Internet is connected
      Toast.LENGTH_SHORT).show();
   }
}

Abgesehen von diesen verbundenen Zuständen gibt es andere Zustände, die ein Netzwerk erreichen kann. Sie sind unten aufgeführt -

Sr.Nr. Zustand
1 Anschließen
2 Getrennt
3 Trennen
4 Suspendiert
5 Unbekannt

Netzwerkoperationen durchführen

Nachdem Sie überprüft haben, ob Sie mit dem Internet verbunden sind, können Sie einen beliebigen Netzwerkvorgang ausführen. Hier rufen wir das HTML einer Website von einer URL ab.

Android bietet HttpURLConnection und URLKlasse, um diese Operationen zu behandeln. Sie müssen ein Objekt der URL-Klasse instanziieren, indem Sie den Link der Website angeben. Die Syntax lautet wie folgt:

String link = "http://www.google.com";
URL url = new URL(link);

Danach müssen Sie anrufen openConnectionMethode der URL-Klasse und empfangen sie in einem HttpURLConnection-Objekt. Danach müssen Sie die anrufenconnect Methode der HttpURLConnection-Klasse.

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();

Und das Letzte, was Sie tun müssen, ist, den HTML-Code von der Website abzurufen. Dafür werden Sie verwendenInputStream und BufferedReaderKlasse. Die Syntax ist unten angegeben -

InputStream is = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String webPage = "",data="";

while ((data = reader.readLine()) != null){
   webPage += data + "\n";
}

Neben dieser Verbindungsmethode stehen in der Klasse HttpURLConnection weitere Methoden zur Verfügung. Sie sind unten aufgeführt -

Sr.Nr. Methode & Beschreibung
1

disconnect()

Diese Methode gibt diese Verbindung frei, sodass ihre Ressourcen entweder wiederverwendet oder geschlossen werden können

2

getRequestMethod()

Diese Methode gibt die Anforderungsmethode zurück, mit der die Anforderung an den Remote-HTTP-Server gesendet wird

3

getResponseCode()

Diese Methode gibt den vom Remote-HTTP-Server zurückgegebenen Antwortcode zurück

4

setRequestMethod(String method)

Diese Methode Legt den Anforderungsbefehl fest, der an den Remote-HTTP-Server gesendet wird

5

usingProxy()

Diese Methode gibt zurück, ob diese Verbindung einen Proxyserver verwendet oder nicht

Beispiel

Das folgende Beispiel zeigt die Verwendung der HttpURLConnection-Klasse. Es wird eine Basisanwendung erstellt, mit der Sie HTML von einer bestimmten Webseite herunterladen können.

Um mit diesem Beispiel zu experimentieren, müssen Sie dies auf einem tatsächlichen Gerät ausführen, auf dem eine WLAN-Verbindung besteht.

Schritte Beschreibung
1 Mit der Android Studio-IDE erstellen Sie eine Android-Anwendung unter dem Paket com.tutorialspoint.myapplication.
2 Ändern Sie die Datei src / MainActivity.java, um Aktivitätscode hinzuzufügen.
4 Ändern Sie die Layout-XML-Datei res / layout / activity_main.xml und fügen Sie bei Bedarf eine beliebige GUI-Komponente hinzu.
6 Ändern Sie AndroidManifest.xml, um die erforderlichen Berechtigungen hinzuzufügen.
7 Führen Sie die Anwendung aus und wählen Sie ein laufendes Android-Gerät aus. Installieren Sie die Anwendung darauf und überprüfen Sie die Ergebnisse.

Hier ist der Inhalt von 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;
   }

}

Hier ist der Inhalt von 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>

Hier ist der Inhalt von Strings.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Hier ist der Inhalt von 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>

Versuchen wir, Ihre Anwendung auszuführen. Ich gehe davon aus, dass Sie Ihr aktuelles Android Mobile-Gerät mit Ihrem Computer verbunden haben. Um die App von Android Studio aus auszuführen, öffnen Sie eine der Aktivitätsdateien Ihres Projekts und klicken Sie in der Symbolleiste auf das

Symbol Ausführen . Vor dem Starten Ihrer Anwendung zeigt Android Studio das folgende Fenster an, in dem Sie eine Option auswählen können, mit der Sie Ihre Android-Anwendung ausführen möchten.

Wählen Sie Ihr Mobilgerät als Option aus und überprüfen Sie Ihr Mobilgerät, das den folgenden Bildschirm anzeigt:

Klicken Sie jetzt einfach auf die Schaltfläche. Es wird die Internetverbindung überprüft und das Bild heruntergeladen.

Out wäre wie folgt und es hat das Logo aus dem Internet geholt.