我搜索了很多与我的问题相关的问题。有没有办法将图像存储在内部存储中,并且它也应该出现在图库中?
我搜索了很多与我的问题相关的问题。有没有办法将图像存储在内部存储中,并且它也应该出现在图库中?
这是完全可能的,我以前做过。
在将图像保存到内部存储器(或称为应用程序文件夹等)之前,最好设置Context.MODE_WORLDREADABLE
。虽然在我的情况下我设置了MODE_PRIVATE并且可以在运行MediaScanner后从相册中读取,但出于安全考虑,我建议您设置MODE_PRIVATE。
在将图像保存到内部存储器后,您可以像这样调用MediaScanner:
// call media scanner to refresh gallery
MediaScannerConnection.scanFile(getApplicationContext(), new String[]{filePath}, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
Log.i("MediaScanner", "Scanned " + path + ":");
Log.i("MediaScanner", "-> uri=" + uri);
}
});
复制/粘贴上面的代码应该可以正常工作。然后您的图像将出现在画廊中。
上下文的参考资料
你可以将内部存储器视为一个目录,并在其中写入文件。示例代码可以在这里找到。从内存加载图像与从目录中读取二进制图像文件相同。然后,使用decodeByteArray将已读取的文件转换为位图,并在画廊上显示。
这是另一个保存图像并在屏幕上显示的示例(但这个示例是在Web视图而不是画廊上)。