Android在意图后获取图像路径

时间:2016-03-04 17:29:34

标签: android android-intent android-image

我做了一个应用程序。它有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之后是其他类型。

2 个答案:

答案 0 :(得分:0)

  

我的问题是在onActivityResult中获取这些意图之后的文件路径。

ACTION_IMAGE_CAPTURE方法没有文件路径,因为您没有提供EXTRA_OUTPUT。如果您确实提供了EXTRA_OUTPUT,那么您已经知道文件路径是什么。

ACTION_PICK没有文件路径,因为不要求用户选择的内容位于您有权访问的文件中。例如,它可能是可移动存储上的图像。使用ContentResolveropenInputStream()等方法获取您所提供的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); }