下载类,可以url下载到相册,记得在清单加权限,6.0代码动态加权限判断,下载图片要在子线程中下载,下载完后广播更新相册
在清单文件里面添加权限:
<!--网络--><uses-permission android:name="android.permission.INTERNET" /><!-- 读写文件 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
下载的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() {@Overridepublic 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() {@Overridepublic 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";@Overrideprotected 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() {@Overridepublic void onClick(View view) {ImgDonwloads.donwloadImg(DownloadSavePictureActivity.this,Path);//iPath}});}
}
注意:对于Android6.0以上的手机一定要判断相应的权限是否开启