拍照意图,不懂路径
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
不必指向文件,更不用说您可以访问的文件了。使用 ContentResovler
与 Uri
值一起工作,例如 openInputStream()
读取 Uri
.
指向的内容
当我启动照片捕捉意图时,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
不必指向文件,更不用说您可以访问的文件了。使用 ContentResovler
与 Uri
值一起工作,例如 openInputStream()
读取 Uri
.