强制正斜杠为 // 而不是自动合并到 / 字符串
Force forward slash to // instead of automatically combine to / in string
目前,我使用Image Loader Universal库从sdcard中的文件路径加载文件。
我在文件路径的 Uri 中遇到正斜杠问题。
加载文件的正确字符串是:content://media/external/images/media/24415
但是当我输入这些代码时:
imageLoader.displayImage(
Uri.fromFile(new java.io.File(FILE_PATH)).toString(),
// .replace("%3A", "/" + java.io.File.separator),
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) {
}
});
}
它自动将 2 个正斜杠 //
组合成 1 个正斜杠 /
(这意味着 content:/media/external/images/media/24415
),因此 Uri 不正确,库可以读取文件,FileNotFoundException
发生了。
不是我想要的,我想要的还是保持//
,而不是合并到/
(意思是content://media/external/images/media/24415
)
认识的人,
请帮助我,谢谢。
我遇到的问题是combine from // to / in string
。所以现在有办法避免像 :
1 - 按以下代码拆分字符串:
// Should load file from sd card by parsing Uri
String FILE_PATH = mAlAlbumItem.get(pos).getFilePath();
// content://media/external/images/media/24415
String[] SPLIT = FILE_PATH.split("//");
if (FILE_PATH != null) {
// Display image
/**
* Should use separate string to void wrap these words "//" to "/"
*/
try {
Enterprise.imageLoader.displayImage(
SPLIT[0] + "//" + SPLIT[1],
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) {
}
});
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
2 - 使用 Scheme.FILE.wrap(FILE_PATH)
或 Scheme.FILE.wrap(new File(FILE_PATH).getAbsolutePath())
代替 Uri.fromFile(new File(FILE_PATH))
解析 Uri
目前,我使用Image Loader Universal库从sdcard中的文件路径加载文件。
我在文件路径的 Uri 中遇到正斜杠问题。
加载文件的正确字符串是:content://media/external/images/media/24415
但是当我输入这些代码时:
imageLoader.displayImage(
Uri.fromFile(new java.io.File(FILE_PATH)).toString(),
// .replace("%3A", "/" + java.io.File.separator),
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) {
}
});
}
它自动将 2 个正斜杠 //
组合成 1 个正斜杠 /
(这意味着 content:/media/external/images/media/24415
),因此 Uri 不正确,库可以读取文件,FileNotFoundException
发生了。
不是我想要的,我想要的还是保持//
,而不是合并到/
(意思是content://media/external/images/media/24415
)
认识的人,
请帮助我,谢谢。
我遇到的问题是combine from // to / in string
。所以现在有办法避免像 :
1 - 按以下代码拆分字符串:
// Should load file from sd card by parsing Uri
String FILE_PATH = mAlAlbumItem.get(pos).getFilePath();
// content://media/external/images/media/24415
String[] SPLIT = FILE_PATH.split("//");
if (FILE_PATH != null) {
// Display image
/**
* Should use separate string to void wrap these words "//" to "/"
*/
try {
Enterprise.imageLoader.displayImage(
SPLIT[0] + "//" + SPLIT[1],
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) {
}
});
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
2 - 使用 Scheme.FILE.wrap(FILE_PATH)
或 Scheme.FILE.wrap(new File(FILE_PATH).getAbsolutePath())
代替 Uri.fromFile(new File(FILE_PATH))