在 Universal Image Loader 中使用时从 SD 卡中的文件路径获取正确的文件 uri
Get correct File uri from file path in sdcard when using in Universal Image Loader
目前,我使用[Universal Image Loader]
库从sd卡加载一些文件。
我想从文件路径中获取以下 URI:
file:///mnt/sdcard/image.png
我已经尝试通过这种方式获取文件 URI:
Uri uri = Uri.fromFile(mAlFileList.get(i));
但是file URI
已经修改为
file:///mnt/sdcard/%5B40k%5D/20141014_232337.jpg
当我在文件夹名称中使用特殊字符时,是:[40k]
- 这是这个 %5B40k%5D
.
的名称
我想要的是获取此文件 URI:file:///mnt/sdcard/[40k]/20141014_232337.jpg
但是我还不知道如何得到正确的东西。
请帮帮我。
P.S.:
- 也适用于文件夹名称中还包含一个space字符的情况,像这样:
My Folder
(改成%20,但不是我想要的)
- 实际上,如果我不使用任何特殊字符,库可以正确加载文件。
从库中接受的 URI:
"http :// site.com/image.png" // from Web
"file:///mnt/sdcard/image.png" // from SD card
"file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail)
"content://media/external/images/media/13" // from content provider
"content://media/external/video/media/13" // from content provider (video thumbnail)
"assets://image.png" // from assets
"drawable://" + R.drawable.img // from drawables (non-9patch images)
代码加载媒体文件:
imageLoader.displayImage(
Uri.fromFile(new java.io.File(FILE_PATH)).toString()
,
markableImageView, mDio,
new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (loadedImage != null & view != null) {
((ImageView) view).setImageBitmap(Bitmap.createScaledBitmap(
loadedImage,
mContext.getResources().getInteger(R.integer.width_file_view),
mContext.getResources().getInteger(R.integer.height_file_view),
false));
}
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(
String imageUri, View view, int current, int total) {
}
});
试试这个
Uri.fromFile(new File("/sdcard/yourImageName.jpg"));
无法获取此 file:///mnt/sdcard/[40k]/20141014_232337.jpg
。
所以我应该尝试另一种方法是获取 Content Uri
,比如 content://media/external/images/media/24415
,而不是上面示例中的 File Uri
。
目前,我使用[Universal Image Loader]
库从sd卡加载一些文件。
我想从文件路径中获取以下 URI:
file:///mnt/sdcard/image.png
我已经尝试通过这种方式获取文件 URI:
Uri uri = Uri.fromFile(mAlFileList.get(i));
但是file URI
已经修改为
file:///mnt/sdcard/%5B40k%5D/20141014_232337.jpg
当我在文件夹名称中使用特殊字符时,是:[40k]
- 这是这个 %5B40k%5D
.
我想要的是获取此文件 URI:file:///mnt/sdcard/[40k]/20141014_232337.jpg
但是我还不知道如何得到正确的东西。
请帮帮我。
P.S.:
- 也适用于文件夹名称中还包含一个space字符的情况,像这样:
My Folder
(改成%20,但不是我想要的) - 实际上,如果我不使用任何特殊字符,库可以正确加载文件。
从库中接受的 URI:
"http :// site.com/image.png" // from Web
"file:///mnt/sdcard/image.png" // from SD card
"file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail)
"content://media/external/images/media/13" // from content provider
"content://media/external/video/media/13" // from content provider (video thumbnail)
"assets://image.png" // from assets
"drawable://" + R.drawable.img // from drawables (non-9patch images)
代码加载媒体文件:
imageLoader.displayImage( Uri.fromFile(new java.io.File(FILE_PATH)).toString() , markableImageView, mDio, new SimpleImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { if (loadedImage != null & view != null) { ((ImageView) view).setImageBitmap(Bitmap.createScaledBitmap( loadedImage, mContext.getResources().getInteger(R.integer.width_file_view), mContext.getResources().getInteger(R.integer.height_file_view), false)); } } }, new ImageLoadingProgressListener() { @Override public void onProgressUpdate( String imageUri, View view, int current, int total) { } });
试试这个
Uri.fromFile(new File("/sdcard/yourImageName.jpg"));
无法获取此 file:///mnt/sdcard/[40k]/20141014_232337.jpg
。
所以我应该尝试另一种方法是获取 Content Uri
,比如 content://media/external/images/media/24415
,而不是上面示例中的 File Uri
。