У меня возникла проблема с выбором файла изображения из внешнего хранилища с помощью средства выбора файлов в Android. Этот вопрос является следствием этого вопроса - Нет такого файла или ошибки каталога при загрузке файла изображения с помощью Retrofit в Android. Моя проблема заключается в открытии и чтении файла из внешнего хранилища в результате активности. Я хочу преобразовать результирующий URI в файл.
Я прочитал файл PDF из папки загрузки в результате активности
Uri bookUri = data.getData();
if(bookUri!=null)
{
String filePath = bookUri.toString();//bookUri.toString()
String mime = app.getMimeType(filePath);
if(mime!=null && !mime.isEmpty() && (mime.toLowerCase()=="application/pdf" || mime.toLowerCase()=="application/txt" || mime.toLowerCase()=="application/text"))
{
bookFile = new File(bookUri.getPath());
ivBookFile.setImageResource(R.drawable.book_selected);
}
else{
Toast.makeText(getBaseContext(),"Unable to process file you have chosen.",Toast.LENGTH_SHORT).show();
}
}
Как видите, я использовал new File(bookUri.getPath()); преобразовать в файл. Приведенный выше код работает хорошо. Это работает. Проблема в том, что теперь я пытаюсь открыть файл изображения в папке DCIM/Camera в результате действия.
Это код, который я использовал
Uri selectedImageUri = data.getData();
if(selectedImageUri!=null)
{
try{
bmpCoverImage = MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImageUri);
imageFile = new File(selectedImageUri.getPath());
if(bmpCoverImage!=null)
{
ivCoverImage.setImageBitmap(bmpCoverImage);
}
}
catch (IOException e)
{
Toast.makeText(getBaseContext(),"An error occurred with the file selected",Toast.LENGTH_SHORT).show();
}
}
Как видите, я использовал новый File(selectedImageUri.getPath()); как я сделал при чтении файла PDF. На этот раз код не работает. Когда я делаю операцию с файлом, как в предыдущем вопросе, выдает ошибку.
я тоже таким способом пользовалась
imageFile = new File(Environment.getExternalStorageDirectory(),selectedImageUri.getPath());
У меня такая же ошибка. Как я могу правильно открыть файл изображения с внешнего хранилища? Как я могу преобразовать выбранный URI файла из внешнего хранилища в файл?