У меня установлено это приложение на моем устройстве (Nexus s).Он кэширует некоторые изображения, если вы используете это приложение.Вот почему он показывает кэшированные изображения в галерее моего устройства.
Я использую курсор, чтобы получить путь
final String[] columns = { MediaStore.Images.Media.DATA };
Cursor imagecursor = managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
MediaStore.Images.Media._ID + " = " + id, null, MediaStore.Images.Media._ID);
if (imagecursor != null && imagecursor.getCount() > 0){
imagecursor.moveToPosition(0);
String path = imagecursor.getString(imagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
Log.d("path", path);
File f = new File("file://" + path);
Log.d("check_file", "" + f.exists());
}
Я получаю путь:
/ mnt/sdcard/cache/hk.ignition.podcast/cartoon/2/http%3A%2F%2Fbigcity.learnenglishapps.com%2Fimages%2Fcartoons%2Fset2%2Ffast-food-new-1.png
Загруженное изображение: http://bigcity.learnenglishapps.com/images/cartoons/set2/fast-food-new-1.png
Когда я беру файл или исследую его с помощью файлового менеджера, такого как Astro, он там.Но когда я проверяю, существует ли файл, он говорит: false
.
Есть ли проблема с символами?
Обновление:
Удаление file://
работало, чтобы проверить, существует ли файл.
Далее, я хотел бы открыть этот файл в галерее.
- я должен использовать этот путь, чтобы открыть изображение?Но это не сработало:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(
Uri.parse("file:///mnt/sdcard/cache/hk.ignition.podcast/cartoon/2/http%3A%2F%2Fbigcity.learnenglishapps.com%2Fimages%2Fcartoons%2Fset2%2Ffast-food-new-1.png"),
"image/*");
startActivityForResult(intent, 3);
- Или я должен попытаться получить путь стиля
content://
из MediaStore?
Обновление 2:
Решено с использованием:
Uri.fromFile(f);
Вместо Uri.Parse()
.Как он строит /
символ из формата кодирования.