Posted on 2018-09-14 title: android-ImageView保存图片到手机并更新媒体库tags: androidcategories: 安卓 android-ImageView保存图片到手机并更新媒体库123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657//调用执行imageview.setDrawingCacheEnabled(true);Bitmap imageBitmap = imageview.getDrawingCache();if (imageBitmap != null) { new SaveImageTask().execute(imageBitmap);} private class SaveImageTask extends AsyncTask<Bitmap, Void, String> { @Override protected String doInBackground(Bitmap... params) { String result = getResources().getString(R.string.save_picture_failed); try { String sdcard = Environment.getExternalStorageDirectory().toString();// String sdcard = Environment.getDataDirectory().toString();// String sdcard = getBaseContext().getFilesDir().toString();; File fileDir=new File(getApplication().getExternalCacheDir(),"images"); System.out.println(sdcard);// File file = new File(sdcard + "/DCIM"); file = new File(sdcard+ "/Download"); if (!file.exists()) { file.mkdirs(); } fileName = "IMG_" + new Date().getTime() + ".jpg"; File imageFile = new File(file.getAbsolutePath(),fileName); FileOutputStream outStream = null; outStream = new FileOutputStream(imageFile); Bitmap image = params[0]; image.compress(Bitmap.CompressFormat.JPEG, 100, outStream); outStream.flush(); outStream.close(); result = getResources().getString(R.string.save_picture_success, file.getAbsolutePath()); } catch (Exception e) { e.printStackTrace(); } return result; } @Override protected void onPostExecute(String result) { Toast.makeText(getApplicationContext(),result,Toast.LENGTH_SHORT).show(); share_code_img.setDrawingCacheEnabled(false); //后面两句是重点不然不会再媒体库中显示(或者重启后显示) try { MediaStore.Images.Media.insertImage(getBaseContext().getContentResolver(), file.getAbsolutePath(), fileName, null); } catch (FileNotFoundException e) { e.printStackTrace(); } getBaseContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsolutePath()+fileName))); }}