2016-03-04 49 views
0

我做了一个应用程序。这些意图在后,从画廊挑选安卓获取意图后的图像路径

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(intent, 2); 

我的问题越来越文件路径通过使用相机

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(intent, 1); 

2)拍摄照片

1):它有一个上传照片2个选项onActivityResult。 是否有任何方法可以获得new File(path)的这些路径,还可以处理sdk级别更改?例如,直到KitKat是1类文件系统,在KitKat是其他类型之后。

+0

你见过这个链接吗?http://stackoverflow.com/questions/20327213/getting-path-of-captured-image-in-android-using-camera-intent –

+0

只需片刻我会试试 – test

+0

@GennadiiSaprykin对于第一种情况(ACTION_IMAGE_CAPTURE)效果不错,但是从图库中挑选会导致所有测试用例崩溃 – test

回答

0

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

由于您没有提供EXTRA_OUTPUT,因此将不存在ACTION_IMAGE_CAPTURE方法的文件路径。如果您确实提供了EXTRA_OUTPUT,那么您已经知道文件路径是什么。

ACTION_PICK没有文件路径,因为没有要求用户在您有权访问的文件中选择的内容。例如,它可能是可移动存储上的图像。使用ContentResolveropenInputStream()等方法获取您给出的Uri所代表的内容。

+0

onActivityResult将我从Ga中选择的文件的Uri返回给我llery,对不起,如果我已经解释过上面的错误,但我的意思是根据该Uri – test

+0

@test获取正确的文件路径:再次,没有办法获得您可以访问的文件路径。使用'ContentResolver'和类似'openInputStream()'的方法来获取由你给出的'Uri'表示的内容。 “onActivityResult将我从Gallery中选择的文件的Uri返回给我” - 仅当您认为“ACTION_PICK”方案是“从图库中选择”时才是。没有记录'ACTION_IMAGE_CAPTURE'来返回'Uri',因此大多数相机应用程序不会返回'Uri'。 – CommonsWare

0

如果可以的话可以从相机获取路径则Intent.ACTION_PICK您可以使用data.getData()直接获取图像的URI,然后您可以使用此方法(如在由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); } 
提供的链接,建议获取文件路径