【发布时间】:2011-04-22 09:40:31
【问题描述】:
我正在使用以下代码使用原生相机拍照:
private File mImageFile;
private String mTempImagePath;
public static Uri imageUri;
public void imageFromCamera() {
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Log.d("fototemp", "No SDCARD");
} else {
mImageFile = new File(Environment.getExternalStorageDirectory()+File.separator+"testFolder", "Pic"+System.currentTimeMillis()+".jpg");
imageUri = Uri.fromFile(mImageFile);
DataClass dc = (DataClass) getApplicationContext();
File tempFile = new File(Environment.getExternalStorageDirectory()+File.separator+"testFolder");
Uri tempUri = Uri.fromFile(tempFile);
dc.setString(DataClass.IMAGE_PATH, tempUri.toString());
Log.d("fototemp", "ImagePath: " + tempUri.toString());
mTempImagePath = mImageFile.getAbsolutePath();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mImageFile));
startActivityForResult(intent, 0);
}
}
我在imageFromCamera()方法中打印出来的ImagePath是:4file:///file%3A/mnt/sdcard/testFolder
现在,当我尝试使用 managedQuery 访问这些照片时,我得到了一个不同的目录。 MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI.toString() 给出 content://media/external/images/thumbnails
这两条路径有什么区别?我怎样才能让 managedQuery 去 testFolder 地图寻找图片?
编辑: 我正在尝试连接:
Uri phoneUriII = Uri.parse(Environment.getExternalStorageDirectory()+File.separator+"testFolder");
imagecursor = managedQuery(phoneUriII, img, null,null, MediaStore.Images.Thumbnails.IMAGE_ID + "");
但是这段代码崩溃了
【问题讨论】:
-
你的意思是要从Url对象中获取真实的图片路径吗?喜欢this?
-
我希望将保存图片的文件夹转换为 Uri,这样我就可以将 i 传递给 managedQuery 方法。我认为
-
你不能只使用从 MediaStore 获得的 Url 来检索二进制流吗?尝试在其上调用 getData() 或使用
getContentResolver().openOutputStream(uri)。 -
我也试过这个( Uri temp = Uri.parse(data.toURI()); Log.d("fototemp", data.toURI());) 但它打印“Foto采取:#Intent;action=inline-data;end" 这也不是正确的路径。完全对这个话题感到困惑