2013-10-07 3 views
2

У меня есть строка filename, которая представляет собой путь к папке с картинками на внешнем хранилище для Android-систем. Я использую строку для сохранения изображения с opencv. Затем я хочу отправить совместное намерение поделиться сохраненным изображением с другими приложениями.Android: Файл не найден на внешнем хранилище

Highgui.imwrite(filename, Image); 
Log.d("WRITEPATH", filename); 

В LogCat я получаю за WRITEPATH:

/storage/emulated/0/Pictures/MyImages/Image1.jpg

Тогда я преобразовать Filepath-строку в URI :

Uri lastsavedUri=Uri.parse(new File(filename).toString()) 

И отправить мою долю намерения:

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE); 
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, SavedImages); 
shareIntent.setType("image/*"); 
startActivity(Intent.createChooser(shareIntent, "Share images to..")); 

SavedImages является ArrayList, содержащих несколько lastsavedUri

К сожалению, нет приложения может найти изображения, которые я пытаюсь поделиться. Например Gmail падает после нажатия отправить почту и получаю ошибку LogCat

10-07 10: 19: 47,265: Е/Gmail (26264): Не удалось получить ориентацию миниатюр/хранения/эмулировать/0/Фотографии/MyImages/Image1.jpg 10-07 10: 19: 47.265: E/Gmail (26264): java.io.FileNotFoundException: No поставщик контента: /storage/emulated/0/Pictures/MyImages/Image1.jpg

Почему я могу сохранить свои изображения, используя строку filepath, но почему я не могу поделиться сохраненными изображениями? Является ли путь неправильным и как мне получить правильный путь к моим сохраненным изображениям?

+0

Закрывает ли файл 'Highgui.imwrite' дескриптор файла? –

+0

Что такое 'SavedImages' в вашем намерении дополнительный поток? – GrIsHu

+0

Я не уверен на 100%, если Highgui.imwrite закрывает дескриптор файла. Я не мог найти информацию на сайте opencv. Можно ли закрыть дескриптор файла с помощью инструментов Android? – wildcat

ответ

5

Я попытался

File saveFile = new File(filename); 
SavedImages.add(Uri.fromFile(saveFile)); 

вместо

Uri lastsavedUri=Uri.parse(new File(filename).toString()) 
SavedImages.add(lastsavedUri); 

и теперь он работает. Я не понимаю, почему, но это работает.

Смежные вопросы