当我启动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”
答案 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
将其转换为路径