我從圖庫中選擇圖像。現在我將它加載到臨時文件中,並可以在ImageView中顯示它。一切正常。從圖庫中加載圖像不會兩次工作
Uri uri = data.getData();
File file = new File(uri+"");
String fileName = file.getName();
String filePath = file.getParent();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri);
//here come's the code to save the temp-file and so on
在fileName和filePath中,我保存名稱和路徑供以後使用。因爲如果用戶想要保存圖像,我想製作它們的副本。
URI shown in the debugger: content:/media/external/images/media/12345
filePath: content:/media/external/images/media
fileName: 12345
如果我要救我使用的文件名和文件路徑來構建URI,並希望做同樣類似上面的圖像。但它不起作用。我從MediaStore中得到一個FileNotFoundException「no content provider」。嗯 - 在我刪除應用程序以進行全新測試之前,出現了「沒有這樣的文件或目錄」,我想我通過READ_EXTERNAL_STORAGE權限消除了「無內容提供者」異常。
Uri uri = Uri.parse(filePath +"/"+ fileName);
Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), uri);
這裏我也看到了調試器中正確的URI。
出了什麼問題?
我已經在AndroidManifest中設置了權限READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE。
我從畫廊的圖像在一個打算,如: \t \t意向galleryIntent =新意圖(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(galleryIntent,RESULT_LOAD_IMG); – chrispi
我想這樣做 - 將圖像複製到我的應用程序中,但稍後再複製一次。但我也喜歡獲取真實的文件名和圖像的真實路徑。我怎樣才能從「data.getData()」或Uri獲取這些信息?我喜歡保存這些信息,以減少在我的數據庫中兩次擁有相同圖像的可能性 - 我知道,如果圖像移動到另一個文件夾,我也有這個問題,但這是我以後要解決的另一個問題。 – chrispi
@chrispi:「我怎樣才能從」data.getData()「或Uri獲取這些信息?」 - 你沒有。沒有要求'Uri'映射到文件,更不用說可以訪問的文件。如果你想要一個文件,複製圖像,並立即做,而不是「以後」,因爲你不再有權訪問它。 – CommonsWare