捕获然后将图像保存到图库有时不起作用
Capture then Save the Image to Gallery not working Sometimes
我有启动相机并拍照的方法(使用 API 24 和更高):
public void invokeCamera()
{
// create the image Uri
Uri pictureUri = FileProvider.getUriForFile(getContext(),getContext().getPackageName() + ".provider",createImageFile());
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// tell the camera where to save
intent.putExtra(MediaStore.EXTRA_OUTPUT,pictureUri);
// permission for saving the image
intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivityForResult(intent,CAPTURE_REQ_CODE);
}
正在创建图像文件:
private File createImageFile() {
File picturesDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String imgName = "myImageName_0X0Y02_test.jpg";
return new File(picturesDirectory.getPath(),"picture" + imgName );
}
- 问题是 :
此代码运行正常,但有时我在图库中看不到图像,有时当我在大约 10 分钟后打开图库时,我会在那里看到它!这很奇怪,我很困惑,我是不是漏掉了什么?
- 已授予所有权限(相机和对存储的完全访问权限)
您是遇到此问题的第 #### 号。您应该将您的新文件告知媒体商店。
为此调用文件的媒体扫描器。
代码已发布 ### 次。所以 google.
由于您使用的是 API 24 及更高版本,我将只提供它的代码。基本上,您需要告诉媒体扫描器文件已添加,以便它可以扫描并立即添加:
public static void scanMediaForChanges(Context context, File file){
MediaScannerConnection.scanFile(context,
new String[]{file.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
}
我有启动相机并拍照的方法(使用 API 24 和更高):
public void invokeCamera()
{
// create the image Uri
Uri pictureUri = FileProvider.getUriForFile(getContext(),getContext().getPackageName() + ".provider",createImageFile());
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// tell the camera where to save
intent.putExtra(MediaStore.EXTRA_OUTPUT,pictureUri);
// permission for saving the image
intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivityForResult(intent,CAPTURE_REQ_CODE);
}
正在创建图像文件:
private File createImageFile() {
File picturesDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String imgName = "myImageName_0X0Y02_test.jpg";
return new File(picturesDirectory.getPath(),"picture" + imgName );
}
- 问题是 :
此代码运行正常,但有时我在图库中看不到图像,有时当我在大约 10 分钟后打开图库时,我会在那里看到它!这很奇怪,我很困惑,我是不是漏掉了什么?
- 已授予所有权限(相机和对存储的完全访问权限)
您是遇到此问题的第 #### 号。您应该将您的新文件告知媒体商店。
为此调用文件的媒体扫描器。
代码已发布 ### 次。所以 google.
由于您使用的是 API 24 及更高版本,我将只提供它的代码。基本上,您需要告诉媒体扫描器文件已添加,以便它可以扫描并立即添加:
public static void scanMediaForChanges(Context context, File file){
MediaScannerConnection.scanFile(context,
new String[]{file.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
}