Q
在开发项目的时候,本打算使用知乎的Matisse进行图片选取以及拍照,但是在实际操作中碰到了这样一件事
- 能获取到相机APP拍照的图片
- 调用系统相机拍照后在选取图片处没有该图
这很困扰,WX,QQ等应用都能拍了照再选取图片的时候看到拍照的图,但是这个不行,我以为是库的问题,我尝试了下全部都是原生的方法。
- 调用相机
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File tempFile = new File(Environment.getExternalStorageDirectory() + "/pic", "temp.png");
if (!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdir();
}
Uri uri = FileProvider.getUriForFile(MainActivity.this, "com.cmiot.demo.fileprovider", tempFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, 100);//携带请求码
- 选取图片
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, 101);
然后先调用了图片,看了一下存在的图,然后调用相机进行拍照,拍完了返回再选取图片,结果图册里面依然看不到该图,只能在文件夹里对图片进行移动才能看到,为啥?求解。。
A
通知媒体库更新数据库,让媒体库对图片/视频一类的媒体文件重新处理就好了。
//Uri的地址scheme需要为file----->file://path
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(new File("此处为file的path地址"))));
一开始没想明白,后面其实就是系统媒体库更新,更新了就好了。
还有其他方法(自己以前都用过,感觉好二啊)
MediaStore.Images.Media.insertImage(contentResolver,bitmap, null,null)
Mark一下,免得忘了。