Я сохраняю изображение с моей камеры следующим образом:
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());
}
Журнал else возвращает content:///storage/emulated/0/com.korcholis.testapp/pictures/1aaf2e587kg519cejk88ch6hle372.png
, что нормально, но курсор null
стоит на cursor.moveToFirst()
. Похоже, курсор не может найти изображение. Однако при попадании в Хранилище через файловый менеджер образ легко находится в нужной папке. Я также проверил, что файл действительно существует при использовании file://
, и это действительно так. Что я делаю не так?
РЕДАКТИРОВАТЬ 08.05.2013: Я продолжал искать решение, однако это выглядит невозможным. Я читал в других темах, что file://
не является достаточно хорошим Uri для поиска с использованием getContentResolver()
, поэтому вместо этого я попытался использовать content://
. Это, несмотря на мои усилия, идет не так хорошо, как ожидалось. Я отредактировал последний кодовый блок в соответствии с текущим кодом, который я использую. Я даже пытался добавить его в галерею, чтобы он мог считаться элементом в «списке разрешенного контента».
MediaStore.Images.Media.ORIENTATION
для вашего ответа здесь . Только то. Я также могу захватить изображение и установить его как рисуемое вImageView
, поэтому изображение существует. - person Sergi Juanola   schedule 13.05.2013