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.