我從我的相機存儲的圖片是這樣的:光標爲圖像始終返回null
String newName = new BigInteger(130, new SecureRandom())
.toString(24);
File mydir = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),
CameraActivity.DIR_PICTURES);
mydir.mkdirs();
fileWithinMyDir = new File(mydir, newName + ".png");
out = new FileOutputStream(fileWithinMyDir);
finalBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
其中CameraActivity.DIR_PICTURES
代表"com.korcholis.testapp/pictures"
。沒有什麼特別的,在我看來。當我嘗試獲取關於此圖像的一些信息時,問題就來了。在我的代碼別的地方:
Uri selectedImage = Uri.fromFile(new File(sample.getPicture()));
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
mediaScanIntent.setData(selectedImage);
getSherlockActivity().sendBroadcast(mediaScanIntent); //Now it's in the Gallery
selectedImage = Uri.parse("content://"+(new File(sample.getPicture()).toString()));
String[] filePathColumn = {MediaStore.Images.ImageColumns.ORIENTATION};
Cursor cursor = getSherlockActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
if(cursor != null)
{
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
Log.i("ImageTest", cursor.getString(columnIndex));
cursor.close();
}
else
{
Log.i("ImageTest", selectedImage .toString());
}
的其他登錄回報content:///storage/emulated/0/com.korcholis.testapp/pictures/1aaf2e587kg519cejk88ch6hle372.png
,這是正常的,但光標是在null
cursor.moveToFirst()
。它看起來像光標找不到圖像。但是,通過文件管理器進入存儲器時,可以在正確的文件夾中輕鬆找到該映像。我也檢查過使用file://
時文件確實存在,它確實存在。我究竟做錯了什麼?
編輯5/8/2013: 我一直在尋找解決方案,但是這看起來不可能。我讀過其他線程file://
是不夠好的Uri尋找使用getContentResolver()
,所以我嘗試使用content://
來代替。儘管我付出了努力,但這並沒有達到預期的效果。我編輯了最後一個代碼塊到我正在使用的當前代碼。我甚至嘗試將其添加到圖庫中,因此它可以作爲「已解決的內容列表」中的項目。
你說你的時候,你要這個文件的一些信息,問題就來了。我明白你想在代碼中的其他地方找到關於圖像的東西。你到底需要什麼? – 2013-05-13 09:32:50
我想抓住'MediaStore.Images.Media.ORIENTATION'爲你的[在這裏回答](http://stackoverflow.com/questions/16397279/implement-a-take-picture-crop-or-use-premade-意圖)。只是。我也能夠抓住圖片並在'ImageView'中設置爲可繪製的,所以圖片就存在了。 – Korcholis 2013-05-13 09:35:49