我做了一个应用程序。它有2个上传照片的选项:
1)使用相机拍照
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
2)从画廊中挑选
Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 2);
我的问题是在onActivityResult
中的这些意图之后获取文件路径。
是否有任何方法可以为new File(path)
获取这些路径,还可以处理sdk级别更改?例如,直到KitKat是1种类型的文件系统,在KitKat之后是其他类型。
答案 0 :(得分:0)
我的问题是在onActivityResult中获取这些意图之后的文件路径。
ACTION_IMAGE_CAPTURE
方法没有文件路径,因为您没有提供EXTRA_OUTPUT
。如果您确实提供了EXTRA_OUTPUT
,那么您已经知道文件路径是什么。
ACTION_PICK
没有文件路径,因为不要求用户选择的内容位于您有权访问的文件中。例如,它可能是可移动存储上的图像。使用ContentResolver
和openInputStream()
等方法获取您所提供的Uri
所代表的内容。
答案 1 :(得分:0)
如果您能够从相机获取路径,那么对于Intent.ACTION_PICK
,您可以使用data.getData()
直接获取图像,然后您可以使用此方法获取文件路径(如提供的链接中所示) Gennadii Saprykin
public String getRealPathFromURI(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx); }