Android cho phép ứng dụng của bạn kết nối với internet hoặc bất kỳ mạng nội bộ nào khác và cho phép bạn thực hiện các hoạt động mạng.
Một thiết bị có thể có nhiều loại kết nối mạng khác nhau. Chương này tập trung vào việc sử dụng kết nối Wi-Fi hoặc kết nối mạng di động.
Một thiết bị có thể có nhiều loại kết nối mạng khác nhau. Chương này tập trung vào việc sử dụng kết nối Wi-Fi hoặc kết nối mạng di động.
Kiểm tra kết nối mạng
Trước khi bạn thực hiện bất kỳ hoạt động mạng nào, trước tiên bạn phải kiểm tra xem bạn có được kết nối với mạng hoặc internet đó không vv Đối với Android này, hãy cung cấp lớp ConnectivityManager . Bạn cần khởi tạo một đối tượng của lớp này bằng cách gọi phương thức getSystemService () . Cú pháp của nó được đưa ra dưới đây
Link đăng ký khóa học : Học lập trình Android cơ bản.
Phương thức này trả về một mảng của NetworkInfo . Vì vậy, bạn phải nhận được nó như thế này.
Android cung cấp lớp HttpURLConnection và URL để xử lý các hoạt động này. Bạn cần khởi tạo một đối tượng của lớp URL bằng cách cung cấp liên kết của trang web. Cú pháp của nó như sau:
Để thử nghiệm với ví dụ này, bạn cần chạy trên thiết bị thực tế mà internet wifi được kết nối.
Đây là nội dung của src / MainActivity.java .
Để chạy ứng dụng từ studio Android, mở một trong các tệp hoạt động của dự án của bạn và nhấp vào Chạy biểu tượng từ thanh công cụ.
Trước khi bắt đầu ứng dụng của bạn, Android studio sẽ hiển thị cửa sổ sau để chọn tùy chọn mà bạn muốn chạy ứng dụng Android của mình.
Ra sẽ như sau và nó đã lấy logo từ internet.
ConnectivityManager check = (ConnectivityManager) this.context.getSystemService(Context.CONNECTIVITY_SERVICE);Khi bạn khởi tạo đối tượng của lớp ConnectivityManager, bạn có thể sử dụng phương thức getAllNetworkInfo để lấy thông tin của tất cả các mạng.
Phương thức này trả về một mảng của NetworkInfo . Vì vậy, bạn phải nhận được nó như thế này.
NetworkInfo[] info = check.getAllNetworkInfo();Điều cuối cùng bạn cần làm là kiểm tra trạng thái kết nối của mạng. Cú pháp của nó được đưa ra dưới đây
for ( int i = 0 ; i < thông tin . length ; i ++) { if ( thông tin [ i ]. getState () == NetworkInfo . State . CONNECTED ) { Toast . makeText ( ngữ cảnh , "Internet được kết nối Toast.LENGTH_SHORT) .show (); } }Ngoài các trạng thái kết nối này, có một số trạng thái khác mà một mạng có thể đạt được. Chúng được liệt kê dưới đây
| Sr.No | Tiểu bang |
|---|---|
| 1 | Kết nối |
| 2 | Đã ngắt kết nối |
| 3 | Ngắt kết nối |
| 4 | Bị đình chỉ |
| 5 | không xác định |
Thực hiện các hoạt động mạng
Sau khi kiểm tra xem bạn đã kết nối với internet chưa, bạn có thể thực hiện bất kỳ thao tác mạng nào. Ở đây chúng tôi đang tìm nạp html của một trang web từ một url.Android cung cấp lớp HttpURLConnection và URL để xử lý các hoạt động này. Bạn cần khởi tạo một đối tượng của lớp URL bằng cách cung cấp liên kết của trang web. Cú pháp của nó như sau:
String link = "http://www.google.com"; URL url = new URL(link);Sau đó, bạn cần gọi phương thức openConnection của lớp url và nhận nó trong một đối tượng HttpURLConnection. Sau đó bạn cần gọi phương thức kết nối của lớp HttpURLConnection.
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect();Và điều cuối cùng bạn cần làm là tìm nạp HTML từ trang web. Đối với điều này, bạn sẽ sử dụng InputStream và lớp BufferedReader . Cú pháp của nó được đưa ra dưới đây
InputStream is = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String webPage = "",data=""; while ((data = reader.readLine()) != null){ webPage += data + "\n"; }Ngoài phương thức kết nối này, còn có các phương thức khác có sẵn trong lớp HttpURLConnection. Chúng được liệt kê dưới đây
| Sr.No | Phương pháp & mô tả |
|---|---|
| 1 | ngắt kết nối () Phương thức này giải phóng kết nối này để các tài nguyên của nó có thể được sử dụng lại hoặc đóng lại |
| 2 | getRequestMethod () Phương thức này trả về phương thức yêu cầu sẽ được sử dụng để thực hiện yêu cầu tới máy chủ HTTP từ xa |
| 3 | getResponseCode () Phương thức này trả về mã phản hồi được trả về bởi máy chủ HTTP từ xa |
| 4 | setRequestMethod (Phương thức String) Phương thức này Đặt lệnh yêu cầu sẽ được gửi đến máy chủ HTTP từ xa |
| 5 | usingProxy () Phương thức này trả về kết nối này có sử dụng máy chủ proxy hay không |
Thí dụ
Ví dụ dưới đây cho thấy việc sử dụng lớp HttpURLConnection. Nó tạo ra một ứng dụng cơ bản cho phép bạn tải xuống HTML từ một trang web cụ thể.Để thử nghiệm với ví dụ này, bạn cần chạy trên thiết bị thực tế mà internet wifi được kết nối.
| Các bước | Sự miêu tả |
|---|---|
| 1 | Bạn sẽ sử dụng Android studio IDE để tạo ứng dụng Android theo gói com.tutorialspoint.myapplication. |
| 2 | Sửa đổi tệp src / MainActivity.java để thêm mã Hoạt động. |
| 4 | Sửa đổi tệp XML bố trí res / layout / activity_main.xml thêm bất kỳ thành phần GUI nào nếu cần. |
| 6 | Sửa đổi AndroidManifest.xml để thêm các quyền cần thiết. |
| 7 | Chạy ứng dụng và chọn một thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả. |
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; } }Đây là nội dung của 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>Đây là nội dung của Strings.xml .
<resources> <string name="app_name">My Application</string> </resources>Đây là nội dung của 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>Hãy thử chạy ứng dụng của bạn. Tôi cho rằng bạn đã kết nối thiết bị Android Mobile thực tế với máy tính của mình.
Để chạy ứng dụng từ studio Android, mở một trong các tệp hoạt động của dự án của bạn và nhấp vào Chạy biểu tượng từ thanh công cụ.
Trước khi bắt đầu ứng dụng của bạn, Android studio sẽ hiển thị cửa sổ sau để chọn tùy chọn mà bạn muốn chạy ứng dụng Android của mình.
![]() |
| Học lập trình Android cơ bản |
Chọn thiết bị di động của bạn làm tùy chọn và sau đó kiểm tra thiết bị di động của bạn sẽ hiển thị màn hình sau đây
Bây giờ chỉ cần nhấp vào nút, Nó sẽ kiểm tra kết nối internet cũng như nó sẽ tải hình ảnh.
Bây giờ chỉ cần nhấp vào nút, Nó sẽ kiểm tra kết nối internet cũng như nó sẽ tải hình ảnh.
Ra sẽ như sau và nó đã lấy logo từ internet.

Không có nhận xét nào:
Đăng nhận xét