我正在从我的相机中存储一张图片,如下所示:
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://
,并且确实存在。我究竟做错了什么?
编辑 5/8/2013:
我一直在寻找解决方案,但这看起来是不可能的。我在其他线程中读到file://
Uri 不足以寻找 using getContentResolver()
,所以我尝试使用 using content://
。尽管我做出了努力,但这并没有像预期的那样顺利。我将最后一个代码块编辑为我正在使用的当前代码。我什至尝试将它添加到图库中,因此它可以算作“已解决的内容列表”中的一个项目。