Android Network Connection Tutorial

Android lar din søknad koble til internett eller andre lokale nettverk og lar deg utføre nettvirksomheten.

En enhet kan ha ulike typer nettverkstilkoblinger. Dette kapittelet fokuserer på bruk av enten en Wi-Fi eller mobilnettverkstilkobling.

Kontrollere nettverkstilkobling

Før du utfører noen nettverksoperasjoner, må du først sjekke at du er koblet til dette nettverket eller Internett osv For denne android gir ConnectivityManager
klasse. Må på å bruke et objekt av denne klassen ved å ringe getSystemService ()
metoden. Syntaksen er gitt nedenfor −
ConnectivityManager check = (ConnectivityManager) this.context.getSystemService (Context.CONNECTIVITY_SERVICE);

Når du instantiate gjenstand for ConnectivityManager klasse, kan du bruke getAllNetworkInfo
metode for å få informasjon av alle nettverkene. Denne metoden returnerer en matrise av NetworkInfo
. Så må du få det slik
NetworkInfo [] info = check.getAllNetworkInfo ();.

Det siste du trenger å gjøre er å sjekke Tilkoblet State
av nettverket. Syntaksen er gitt nedenfor −
for (int i = 0; i < info.length; i ++) {if (info [i] .getState () == NetworkInfo.State.CONNECTED) {Toast.makeText (kontekst "Internett er koblet Toast.LENGTH_SHORT) .vis ();}}

Bortsett fra dette tilkoblede stater, er det andre stater et nettverk kan oppnå De er listet opp nedenfor.
Sr.NoState1Connecting2Disconnected3Disconnecting4Suspended5Unknown
Utføre Network operasjoner

Etter å ha sjekket at du er koblet til Internett, kan du utføre en nettverksdrift. Her er vi henter html for en nettside fra en url.

Android gir HttpURLConnection < .. br> og URL
klassen til å håndtere disse operasjonene Du trenger på å bruke et objekt av URL klasse ved å gi en link på hjemmesiden sin syntaks er som følger −
String link = "http: //www.google.com "; URL url = new URL (link);

Etter at du må ringe openConnection
metode for url klasse og motta den i en HttpURLConnection objekt Etter at du må ringe. . koble
metode for HttpURLConnection klasse
HttpURLConnection conn = (HttpURLConnection) url.openConnection (); conn.connect ();

Og det siste du trenger å gjøre er å hente HTML fra nettsiden. For dette vil du bruke Input Hotell og BufferedReader
klasse. Syntaksen er gitt nedenfor −
Input er = conn.getInputStream (); BufferedReader leser = new BufferedReader (ny InputStreamReader (er "UTF-8")); String nettside = "", data = "", mens ((data = reader.readLine ()) = null!) {nettside + = data + "\\ n";}

Bortsett fra dette connect metoden, finnes det andre metoder som er tilgjengelige i HttpURLConnection klasse. De er listet opp nedenfor −
Sr.NoMethod & description1 frakobling ()

Denne metoden utgivelser denne forbindelse, slik at ressursene kan enten gjenbrukes eller lukket
2 getRequestMethod ()

Denne metoden returnerer forespørselsmetoden som vil bli brukt til å gjøre forespørselen til den eksterne HTTP-server
3 getResponseCode ()

Denne metoden returnerer svarkode returnert av den eksterne HTTP-server
4 setRequestMethod (String metode)

Denne metoden Angir forespørsel kommando som vil bli sendt til den eksterne HTTP-server
5 usingProxy ()

Denne metoden returnerer om denne forbindelse bruker en proxy-server eller ikke anbefale
Eksempel

Eksempelet nedenfor viser bruken av HttpURLConnection klasse. Det kasser en enkel applikasjon som lar deg laste ned HTML fra en gitt nettside.

For å eksperimentere med dette eksempelet, må du kjøre dette på en faktisk enhet der wifi internett er koblet til.
StepsDescription1You vil bruke Android studio IDE å lage en Android-applikasjon under en pakke com.tutorialspoint.myapplication. Mens du oppretter dette prosjektet, må du Target SDK og kompilere med på den nyeste versjonen av Android SDK til å bruke høyere nivåer av APIs.2Modify src /MainActivity.java fil for å legge til aktivitet code.4Modify layout XML fil res /layout /activity_main.xml legge til GUI-komponent hvis required.6Modify AndroidManifest.xml å legge nødvendig permissions.7Run programmet og velge en som kjører Android-enhet, og installere programmet på den og verifisere resultatene.

Her er innholdet i src /MainActivity . .java
pakken com.tutorialspoint.myapplication, import android.app.ProgressDialog, import android.content.Context, import android.graphics.Bitmap, import android.graphics.BitmapFactory; import android.net.ConnectivityManager; import android.net.NetworkInfo, import android.os.Bundle, import android.os.Handler, import android.os.Message, import android.support.v7.app.ActionBarActivity, import android.view.Menu; import android. view.MenuItem, import android.view.View, import android.widget.Button, import android.widget.EditText, import android.widget.ImageView, import android.widget.TextView, 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 strekker ActionBarActivity {private ProgressDialog progressDialog; privat Bitmap bitmap = null; Button b1; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); b1 = (Button) findViewById (R.id.button); b1.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) {checkInternetConenction (); downloadImage ("http://www.tutorialspoint.com/green/images/logo.png");}} ); } Private void downloadImage (String urlStr) {progressDialog = ProgressDialog.show (dette, "", "Nedlasting Bilde fra" + urlStr); endelige String url = urlStr; ny tråd () {public void run () {Input i = null; Melding msg = Message.obtain (); msg.what = 1; try {i = openHttpConnection (url); bitmap = BitmapFactory.decodeStream (i); Bundle b = new Bundle (); b.putParcelable ("bitmap", bitmap); msg.setData (b); in.close (); } Catch (IOException e1) {e1.printStackTrace (); } MessageHandler.sendMessage (msg); } }.begynne(); } Private Input openHttpConnection (String urlStr) {Input i = null; int resCode = 1; try {URL url = new URL (urlStr); URLConnection urlConn = url.openConnection (); (! (urlConn instanceof HttpURLConnection)) hvis {kaste nytt IOException ("URL er ikke en 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) {i = httpConn.getInputStream (); }} Catch (MalformedURLException e) {e.printStackTrace (); } Catch (IOException e) {e.printStackTrace (); } Tilbake i; } 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 () {//få Tilkoblingsbehandling objekt for å sjekke forbindelse ConnectivityManager forbin = (ConnectivityManager) getSystemService (getBaseContext () CONNECTIVITY_SERVICE.); //Sjekk for nettverkstilkoblinger 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 (dette, "tilkoblet", Toast.LENGTH_LONG) .vis (); return true; } else if (connec.getNetworkInfo (0) .getState () == android.net.NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo (1) .getState () == android.net.NetworkInfo.State.DISCONNECTED) { Toast.makeText (dette, "Ikke tilkoblet", Toast.LENGTH_LONG) .vis (); return false; } Return false; }Override Public boolean onCreateOptionsMenu (Meny menyen) {//Blås menyen; dette legger til elementer i handlingsfeltet hvis det er til stede. . getMenuInflater () blåse (R.menu.menu_main, menyen); return true; }Override Public boolean onOptionsItemSelected (MENUITEM element) {//Håndtak handlingen bar varen klikk her. Handlingsfeltet vil //automatisk håndtere klikker på Hjem /Opp-knappen, så lenge //som du angir en forelder aktivitet i AndroidManifest.xml. int id = item.getItemId (); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) {return true; } Returnere super.onOptionsItemSelected (element); }}

Her er innholdet i activity_main.xml
< RelativeLayout xmlns:. android = "http://schemas.android.com/apk/res/android~~number=plural" xmlns: verktøy = "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" verktøy: kontekst = ". MainActivity" > < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "UI Animator Viewer" android: id = "+ id /textView" android: Tekststørrelse = "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: Tekststørrelse = "35dp" /> < Imageview android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /bildeVis" 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 /knapp" android: layout_below = "+ id /bildeVis" android: layout_centerHorizontal = "true" android: layout_marginTop = "76dp" /> < /RelativeLayout >

Her er innholdet i strings.xml
< ressurser >. < string name = "APP_NAME" > My Application < /string > < string name = "hello_world" > Hei, verden <! /string > < string name = "action_settings" > Innstillinger < /string > < /ressurser >

Her er innholdet i AndroidManifest.xml
<? xml version = "1.0" encoding = "utf-8" > < manifest xmlns:? android = "http://schemas.android.com/apk/res/android" pakken = "com.tutorialspoint.myapplication" > < bruker-tillatelse android: name = "android.permission.INTERNET" /> < bruker-tillatelse android: name = "android.permission.ACCESS_NETWORK_STATE" /> < søknad android: allowBackup = "true" android: icon = "@ Mipmap /ic_launcher" android: label = "@ streng /APP_NAME" android: tema = "@ stil /AppTheme" > < aktivitet android: ". MainActivity" name = android: label = "@ streng /APP_NAME" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.LAUNCHER" /> < /intent-filter > < /aktivitets > < /søknad > < /manifest >

La oss prøve å kjøre programmet. Jeg antar at du har koblet den faktiske Android Mobile-enhet med datamaskinen. For å kjøre programmet fra android studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Før du starter programmet, vil Android studio vise følgende vindu for å velge et alternativ hvor du vil kjøre Android-applikasjon

Velg den mobile enheten som et alternativ, og deretter sjekke den mobile enheten som vil vise følgende skjermbilde og minus.;

Nå klikker du bare på knappen, Det vil sjekke internettforbindelse, så vel som det vil laste ned bildet

Out ville være som følger, og det har hente logo fra internett Anmeldelser