Android 捕获图像,然后将其保存到“多媒体资料”中有时不工作
我有一种启动相机并拍照的方法(使用API 24及更高版本的软件): 创建图像文件:Android 捕获图像,然后将其保存到“多媒体资料”中有时不工作,android,camera,save,gallery,android-mediascanner,Android,Camera,Save,Gallery,Android Mediascanner,我有一种启动相机并拍照的方法(使用API 24及更高版本的软件): 创建图像文件: private File createImageFile() { File picturesDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); String imgName = "myImageName_0X0Y02_test.jpg"; return
private File createImageFile() {
File picturesDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String imgName = "myImageName_0X0Y02_test.jpg";
return new File(picturesDirectory.getPath(),"picture" + imgName );
}
- 问题是:
- 授予所有权限(摄像头和对存储的完全访问)
- 你是这个问题的头号人物。你应该告诉媒体商店你的新文件
为此,请调用文件的媒体扫描程序
代码已经发布了####次。因此,谷歌。因为您使用的是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);
}
});
}
这不是一个答案,你不应该把它贴在评论上,真是胡说八道。我告诉了问题的原因和解决方法。给你留了点事做。一个真实的答案。告诉我搜索不是答案,而是评论。如果你认为这是重复,那么用回答的问题适当地标记它。在我看来,在你的答案中猛烈抨击OP并不会给社区带来任何价值。最好的答案是,我应该在onActivityResult上调用这个方法吗?@LovingAndroid很高兴我能帮上忙:)是的,我个人在检查结果是否正常后立即调用它{当我在API 23和更低版本上使用此方法时,我应该担心吗?我现在还没有看到错误:)@LovingAndroid我认为在API低于19的情况下,您应该发送一个广播,类似于
sendBroadcast(新的Intent(Intent.ACTION\u MEDIA\u MOUNTED,Uri.fromFile(Environment.getExternalStorageDirectory()));
虽然我不确定第二个参数,但它应该有效。谢谢,但是第一个方法很有效:)但是我会记下这个注释
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);
}
});
}