拍照意图,不懂路径

Photo intent, don't understand the path

当我启动照片捕捉意图时,return 中提供给我的照片路径是:content://media/external/images/media/40209 但是当我查看我的设备时,照片路径应该是这样的[..]/pictures/1456164469539.jpg

你知道如何从第一条路径得到第二条路径吗?

注意我使用了 yanokwa Android ACTION_IMAGE_CAPTURE Intent 中描述的方法。

谢谢,

-------------------- 编辑

我这样启动我的意图:

private void launchPhotoIntent() {
    Uri photoUri = getActivity().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            new ContentValues());
    Log.i("renaud","photoUri : "+mPhotoUri.toString());
    SharedPreferences sharedPreferences = getActivity().getSharedPreferences(AppConstants.SP,Context.MODE_PRIVATE);
    sharedPreferences.edit().putString("test",photoUri.toString()).commit();
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
    getActivity().startActivityForResult(intent, ACTION_TAKE_PHOTO);
}

在我的回调中:

else if(requestCode == PostMessageWindowFragment.ACTION_TAKE_PHOTO && resultCode == Activity.RESULT_OK){
    Uri uri = Uri.parse(sharedPreferences.getString("test",null)); // data.getData();
    File file = new File(event.uri.getPath());
    Log.i("PICTEST",""+file.length());
}

它记录“0”

你得到的路径就是文件URI。尝试使用此 Convert file: Uri to File in Android

将其转换为路径

When I launch a Photo Capture intent, the photo path that is gave to me in return is : content://media/external/images/media/40209

那不是一条路。那是一个Uri,指向内容

the photo path should have been something like [..]/pictures/1456164469539.jpg

不一定。

首先,有数以千计的 Android 设备型号和数以千计的相机应用程序(用户预装和安装),其中一些实现了 ACTION_IMAGE_CAPTURE。一款相机应用的功能不一定与另一款相机应用的功能一致。

其次,如果你阅读the documentation for ACTION_IMAGE_CAPTURE,你会注意到没有"photo path that is gave to me in return"。如果您提供 EXTRA_OUTPUT,您的照片应该位于该位置。如果不这样做,请在传递给 onActivityResult()Intent 上使用 getExtra("data") 来获取缩略图位图。您似乎假设 Intent 会有一个 Uri,但很少有相机应用会这样做。

Do you know how to get the second path from the first ?

这通常是不可能的,因为 Uri 不必指向文件,更不用说您可以访问的文件了。使用 ContentResovlerUri 值一起工作,例如 openInputStream() 读取 Uri.

指向的内容