我在使用Android中的文件選取器從外部存儲中選擇圖像文件時遇到問題。這個問題是這個問題的結果 - No such file or diectory error in image file upload using Retrofit in Android。我的問題是從活動結果的外部存儲打開和讀取文件。我想將結果URI轉換爲文件。如何使用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從外部存儲轉換爲文件?
非常感謝。我會嘗試一下。現在我得到了什麼是錯誤的,你明確指出了我。現在我從你身上學到了很好的一課。 –
我已經試過了。我安裝了一個文件選擇器。它工作完美。非常感謝。 –