Android下载网络图片并保存到相册

oa.house365.com 📅 2025-10-21 10:10:01 ✍️ admin 👁️ 1409 ❤️ 671
Android下载网络图片并保存到相册

下载类,可以url下载到相册,记得在清单加权限,6.0代码动态加权限判断,下载图片要在子线程中下载,下载完后广播更新相册

在清单文件里面添加权限:

下载的url的工具类:

/**

* Created by YuShuangPing on 2018/12/12.

*/

public class DonwloadSaveImg {

private static Context context;

private static String filePath;

private static Bitmap mBitmap;

private static String mSaveMessage = "失败";

private final static String TAG = "PictureActivity";

private static ProgressDialog mSaveDialog = null;

public static void donwloadImg(Context contexts, String filePaths) {

context = contexts;

filePath = filePaths;

mSaveDialog = ProgressDialog.show(context, "保存图片", "图片正在保存中,请稍等...", true);

new Thread(saveFileRunnable).start();

}

private static Runnable saveFileRunnable = new Runnable() {

@Override

public void run() {

try {

if (!TextUtils.isEmpty(filePath)) { //网络图片

// 对资源链接

URL url = new URL(filePath);

//打开输入流

InputStream inputStream = url.openStream();

//对网上资源进行下载转换位图图片

mBitmap = BitmapFactory.decodeStream(inputStream);

inputStream.close();

}

saveFile(mBitmap);

mSaveMessage = "图片保存成功!";

} catch (IOException e) {

mSaveMessage = "图片保存失败!";

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

messageHandler.sendMessage(messageHandler.obtainMessage());

}

};

private static Handler messageHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

mSaveDialog.dismiss();

Log.d(TAG, mSaveMessage);

Toast.makeText(context, mSaveMessage, Toast.LENGTH_SHORT).show();

}

};

/**

* 保存图片

* @param bm

* @throws IOException

*/

public static void saveFile(Bitmap bm ) throws IOException {

File dirFile = new File(Environment.getExternalStorageDirectory().getPath());

if (!dirFile.exists()) {

dirFile.mkdir();

}

String fileName = UUID.randomUUID().toString() + ".jpg";

File myCaptureFile = new File(Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/" + fileName);

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));

bm.compress(Bitmap.CompressFormat.JPEG, 80, bos);

bos.flush();

bos.close();

//把图片保存后声明这个广播事件通知系统相册有新图片到来

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

Uri uri = Uri.fromFile(myCaptureFile);

intent.setData(uri);

context.sendBroadcast(intent);

}

}

在Activity中进行调用:

public class DownloadSavePictureActivity extends AppCompatActivity {

private Button btn_pic;

private Bitmap bitmap;

private String Path="http://39.106.39.112:33/public/static/img/qrcode/MAB214ef69e7a5102f86ca8b0136224117.png";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_download_save_picture);

btn_pic=findViewById(R.id.btn_pic);

btn_pic.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

ImgDonwloads.donwloadImg(DownloadSavePictureActivity.this,Path);//iPath

}

});

}

}

注意:对于Android6.0以上的手机一定要判断相应的权限是否开启

相关推荐

舒克和贝塔是什么梗(“舒克和贝塔”是二只可爱的老鼠,一只会开飞机,源于童话大王)
提车攻略|注意事项这篇笔记就够了‼️
尼康怎么调光圈