正如你所看到的,我在这里是新手(但对于编程来说并不陌生)。我正在使用我的第一个Android相机应用程序,我无法将我的视频文件显示在库中。我知道我需要告知系统我的新文件的内容值,但我尝试的任何工作都没有。
奇怪的是,这适用于图像:
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, imgFile.getAbsolutePath());
getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
然而,不始终会在图库应用中显示视频:
ContentValues values = new ContentValues();
values.put(MediaStore.Video.Media.DATA, vidFile.getAbsolutePath());
getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
我向您保证这是一个有效的视频文件,有时上面的代码可以使用。但是,我无法找到何时起作用的模式。
我还尝试了一些其他变体来getContentResolver()。insert。事实上,如果我告诉它我的视频文件是一个图像,它总是使用我视频的不可视图像更新图库。
非常感谢您的帮助!
答案 0 :(得分:0)
这是一次考验,但我找到了解决办法。实际上,这个新的解决方案可能比我试图做的更好。取决于我想的各种方法的开销。
如Pascal here所述,我可以通过广播正确的意图来更新内容提供商:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAddedOrDeleted)));
这使我的视频每次都可以在我的图库应用中看到(感谢上帝,我正准备编写自己的内置查看器) 但我仍然很好奇为什么我的方法适用于图像而不是视频,以防有人知道。