У меня возникла проблема с выбором файла изображения из внешнего хранилища с помощью файла picker в Android. Этот вопрос является следствием этого вопроса - No such file or diectory error in image file upload using Retrofit in Android. Какая проблема заключается в открытии и чтении файла из внешнего хранилища при действии. Я хочу преобразовать URI результата в файл.Как выбрать файл из внешнего хранилища с помощью файла picker в Android
Я прочитал 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();
}
}
Как вы можете видеть, что я использовал новый файл (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();
}
}
Как вы можете видеть, что я использовал новый файл (selectedImageUri.getPath()); как я это делал в чтении pdf-файла. На этот раз код не работает. Когда я работаю с файлом, как в предыдущем вопросе, он дает мне ошибку.
Я использовал этот способ также
imageFile = new File(Environment.getExternalStorageDirectory(),selectedImageUri.getPath());
я получил ту же ошибку. Как я могу правильно открыть файл изображения с внешнего хранилища? Как я могу конвертировать выбранный URI файла из внешнего хранилища в файл, пожалуйста?
Спасибо, что так много. Я постараюсь. Теперь я понял, что со мной не так, и я четко указал мне. Теперь я узнал хороший урок от u. –
Я уже пробовал. Я установил сборщик файлов. Он работает отлично. Большое спасибо. –