Hướng dẫn kiểm tra trạng thái kết nối internet và tải ảnh về ImageView

Code: Default | Auth: 03cd82

Bước 1: Tạo project trống, nhúng thêm 1 ImageView vào layout

Bạn tự căn chỉnh ImageView cho phù hợp với giao diện nhé

<imageview 
android:id="@+id/imageView01" 
android:layout_height="230dp" 
android:layout_width="248dp"/>

Bước 2: Trong file java của activity, viết hàm kiểm tra trạng thái kết nối internet

  boolean CheckNetworkConnect(){
        ConnectivityManager cnn = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
       // kiểm tra đối với wifi
        NetworkInfo networkInfo = cnn.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        boolean isWifi = networkInfo.isConnected();

        // kiểm tra đối với 3G
        networkInfo = cnn.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        boolean isMobile = networkInfo.isConnected();

        if(isWifi)
            Log.d(TAG, "CheckNetworkConnect: Đang kết nối Wifi");

        if(isMobile)
            Log.d(TAG, "CheckNetworkConnect: Đang kết nối Mobile Data (3G,4G,5G)");

        return isMobile || isWifi;
    }

Cần khai báo xin quyền trong mainifest

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />

Bước 3: Tạo lớp kế thừa từ AsyncTask để thực hiện download Image

Chú ý: Code mẫu này thì lớp được viết trong class của MainActivity, nếu bạn viết tách riêng thì phải truyền tham số activity lúc khởi tạo.

class DownloadImg extends AsyncTask<String, Void, Bitmap> {
        InputStream inputStream;
        Bitmap bitmap;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            Log.d("zzzzzz", "onPreExecute: bat dau download ");
        }

        @Override
        protected Bitmap doInBackground(String... strings) {
            Log.d("zzzzzzzzz", "doInBackground: dang download " + strings[0]);
            try {
                URL url = new URL(strings[0]);
                HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();

                httpsURLConnection.setReadTimeout(10000);
                httpsURLConnection.connect();

                int status = httpsURLConnection.getResponseCode();
                if(status == HttpsURLConnection.HTTP_OK){
                    inputStream = httpsURLConnection.getInputStream();
                    bitmap = BitmapFactory.decodeStream(inputStream);

                }
                httpsURLConnection.disconnect();

                inputStream.close();

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return bitmap;
        }

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);
            Log.d("zzzzzz", "onPostExecute: Download xong roi ");
            ImageView imageView = findViewById(R.id.imageView);
            imageView.setImageBitmap(bitmap);
        }
    }

 

Bước 3: Trong hàm onCreate của activity, viết lệnh tải ảnh

 
        if(CheckNetworkConnect()){
            // gọi hàm download file
            String link = "https://zezo.dev/images/zezo.png";

           // tạo đối tượng và thực thi luôn lệnh execute không cần khai báo biến
            new DownloadImg().execute(link);

        }else{
            // chưa kết nối internet 
            Log.d(TAG, "onCreate: Bạn chưa kết nối internet");
        }

Bước 4: Chạy thử nghiệm chương trình.

Hãy xem logcat để biết tiến trình Nếu không hiển thị được ảnh, hãy vào điện thoại gỡ bỏ app rồi chạy lại. 

Tham khảo tìm hiểu về AsyncTask

Cấu trúc lớp kế thừa AsyncTask đơn giản