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一下,免得忘了。