照片意图,不明白的道路

时间:2016-02-23 11:26:25

标签: android android-intent android-camera-intent

当我启动Photo Capture意图时,返回给我的照片路径为:content://media/external/images/media/40209但是当我查看我的设备时,照片路径应该是[..]/pictures/1456164469539.jpg < / p>

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

注意我使用yanokwa {/ 3}中描述的方法。

谢谢,

-------------------- EDIT

我这样发起我的意图:

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”

2 个答案:

答案 0 :(得分:2)

  

当我启动Photo Capture意图时,返回给我的照片路径是:content:// media / external / images / media / 40209

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

  

照片路径应该像[..] / pictures / 1456164469539.jpg

不一定。

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

其次,如果您阅读the documentation for ACTION_IMAGE_CAPTURE,您会注意到没有“回复给我的照片路径”。如果您提供EXTRA_OUTPUT,则您的照片应该位于该位置。如果不这样做,请使用传递给getExtra("data")的{​​{1}}上的Intent来获取缩略图位图。您似乎假设onActivityResult()会有Intent,并且很少有相机应用会这样做。

  

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

这通常是不可能的,因为Uri不必指向文件,更不用说您可以访问的文件了。使用Uri处理ContentResovler值,例如Uri,以便读取openInputStream()指向的内容。

答案 1 :(得分:0)

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

将其转换为路径