使用HttpURLConnection下载网络图片
首先设置权限:使用到网络必需要添加权限和要有网络,否则下载失败
DownloadTask2文件
package com.example.administrator.urlapplication;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Environment;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Created by Administrator on 2018/3/14.
*/
public class DownloadTask2 extends AsyncTask<String, Integer, Integer> {
private String dirPath;
private String filePath;
private Context context;
private ImageView loadImg;
public DownloadTask2(Context context, ImageView loadImg) {
this.context = context;
this.loadImg = loadImg;
}
@Override
protected Integer doInBackground(String... strings) {
String fileName = strings[1];
dirPath = Environment.getExternalStorageDirectory() + "/download_pics/";
File dir = new File(dirPath);
if (!dir.exists()) {
dir.mkdir();
}
filePath = dirPath + strings[1];
File file = new File(filePath);
if (file.exists()) {
return -1;
} else {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
InputStream inputStream = null;
OutputStream outputStream = null;
try {
URL url = new URL(strings[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if (connection.getResponseCode() == 200) {
inputStream = connection.getInputStream();
} else {
return -2;
}
outputStream = new FileOutputStream(file);
int length = 0;
byte[] buffer = new byte[4 * 1024];
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
outputStream.close();
inputStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return 1;
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
switch (integer) {
case 1:
Toast.makeText(context, "下载完成", Toast.LENGTH_SHORT).show();
Bitmap bm = BitmapFactory.decodeFile(filePath);
loadImg.setImageBitmap(bm);
break;
case -1:
Toast.makeText(context, "文件已存在", Toast.LENGTH_SHORT).show();
break;
case -2:
Toast.makeText(context, "网络异常", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
JiazaiActivity文件
package com.example.administrator.urlapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class JiazaiActivity extends AppCompatActivity {
private Button loadBtn;
private ImageView loadImg;
private String picUrl="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1520919745&di=24fc53f75cf64bac4555f815d9685137&src=http://f3.topitme.com/3/24/4d/1124779522fab4d243o.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jiazai);
bindID();
loadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DownloadTask2 task=new DownloadTask2(JiazaiActivity.this,loadImg);
task.execute(picUrl,"lan.jpg");
}
});
}
private void bindID() {
loadBtn=findViewById(R.id.load_btn);
loadImg=findViewById(R.id.load_img);
}
}