【问题标题】:Android get image path after intentAndroid在意图后获取图像路径
【发布时间】:2016-03-04 17:29:33
【问题描述】:

我做了一个应用程序。它有 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 是一种文件系统,之后 KitKat 是另一种类型。

【问题讨论】:

  • 你看过这个链接吗? stackoverflow.com/questions/20327213/…
  • 一会儿我试试
  • @GennadiiSaprykin 对于第一个案例 (ACTION_IMAGE_CAPTURE) 效果很好,但是从图库中挑选会在所有测试案例中崩溃

标签: android android-intent android-image


【解决方案1】:

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

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

ACTION_PICK 没有文件路径,只要不要求用户选择的内容必须在您有权访问的文件中。例如,它可以是可移动存储上的图像。使用ContentResolveropenInputStream() 之类的方法来获取给定的Uri 所代表的内容。

【讨论】:

  • onActivityResult 返回我从 Gallery 中选择的文件的 Uri,抱歉,如果我在上面解释了错误,但我的意思是根据该 Uri 获取正确的文件路径
  • @test:同样,没有办法获得您必须访问的文件路径。使用ContentResolveropenInputStream() 之类的方法来获取给定的Uri 所代表的内容。 “onActivityResult 返回我从图库中选择的文件的 Uri”——仅当您认为 ACTION_PICK 场景是“从图库中选择的”时。 ACTION_IMAGE_CAPTURE 没有记录返回 Uri,因此大多数相机应用程序不会返回 Uri
【解决方案2】:

如果您能够从相机获取路径,那么对于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); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多