概要:
虽然已经很晚了但我还是情不自禁的想把刚学到的东西记录下来……这个bug调了我两个小时……大家开发过程中有木有遇到要保存一个图片,然后想在手机相册里看到这张图片却死活看不到,对!图片就在那里,不来不去,相册就是不知道啊啊啊啊啊!
问题解决
先说一下大体思路,然后上代码,然后睡觉!!
相信大家已经会了如何将一个图片存储到一个位置,但是不知道如何更新相册
这里之前有一位大神用的是这样的方法:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(file.getAbsolutePath())));
对,就是发一个广播给相册告诉他我们有新的文件,希望他来更新一下……
但是,我用了这个方法,路径也没有问题,他就是死活看不见啊!!!!
然后尝试换了一种思路,因为广播是没错的,错可能错在路径!!
于是改成了这样
Uri localUri = Uri.fromFile(file); Intent localIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, localUri); sendBroadcast(localIntent);然后就成功了耶~~,是的,这次我们传的是file本身,路径什么的让他自己解析去吧@!
最后贴一下相关代码,里面包含了drawable和bitmap转换等小知识,希望对大家能有帮助,其实还想再写一个关于popupWindow的,改天吧~
Drawable drawable = imgv_share_QR_code.getDrawable(); BitmapDrawable bmpd = (BitmapDrawable)drawable; Bitmap bmp = bmpd.getBitmap(); // 首先保存图片 File appDir = new File(Environment.getExternalStorageDirectory(), "picture"); if (!appDir.exists()) { appDir.mkdir(); } String fileName = System.currentTimeMillis() + ".jpg"; File file = new File(appDir, fileName); try { FileOutputStream fos = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 其次把文件插入到系统图库 try { MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), fileName, null); } catch (FileNotFoundException e) { e.printStackTrace(); } // 最后通知图库更新 Uri localUri = Uri.fromFile(file); Intent localIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, localUri); sendBroadcast(localIntent); ToastUtils.showMessage(TeamShareActivity.this, "图片已保存"); popupWindow.dismiss();
最后,大家晚安~~