我想获得相机照片的真实路径,而不是拍照。
我现在使用的是:
String path=""; //The real path I want...
String[] projection=new String[]{MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA, MediaStore.Images.ImageColumns.DATE_TAKEN};
final Cursor c=context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.ImageColumns.DATE_TAKEN+" DESC");
if(c!=null)
{
c.moveToFirst();
path=c.getString(1);
Log.i(Constants.TAG, "File Path: "+path);
path=path.substring(0, path.lastIndexOf('/')+1);
}
但是上面的结果只是在某个时候改变了......
对于正常情况,它将是/storage/ext_sd/DCIM/100MEDIA/
(我正在使用 HTC Butterfly,android 4.1.1,在 United Stats 中称为 DroidDNA 的完全相同的模块)
今天下午,在我将一些照片移到另一个文件夹后(在手机上操作,而不是在 PC 上操作)
结果更改为/storage/ext_sd/[some_other_of_my_image_folder]/
如何获得相机照片的真实路径?请帮我 :-(
编辑:我正在尝试另一种方式,如下所示:
Log.i(Constants.TAG, "Photo path: "+f.getPath());
if(f.exists())
{
File test1=new File(f, "100MEDIA/");
if (test1.exists())
{f=test1;}
else
{
File test2=new File(f, "100ANDRO/");
if(test2.exists())
{f=test2;}
else
{
File test3=new File(f, "Camera/");
if(!test3.exists())
{test3.mkdirs();}
f=test3;
}
}
}
else
{
f=new File(f, "Camera/");
f.mkdirs();
}
它返回的路径如下:/storage/sdcard0/DCIM/100MEDIA/,这是我手机的内部 16GB 空间。
我已经将我的相机照片存储设置为外部 microSD,路径应该是/ext_sd/DCIM/100MEDIA/
真的需要帮助,医生!