无法从android M中的URI获取文件路径

时间:2017-10-21 15:43:00

标签: android android-intent uri filepath

我正在测试nexus 5上的app,它有marshmallow版本的android。我看了几个方法来从uri获取文件路径,但它一直返回null。这种方法适用于果冻豆和kitkat,但不适用于棉花糖。

public String getPath(Uri uri) {
        Log.d(TAG,"Uri GET PATH "+uri);
        String[] projection = {MediaStore.Images.Media.DATA};
        Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
        Log.d(TAG,"Cursor value "+cursor);
        int Column_Index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        Log.d(TAG,"Column Index "+Column_Index);
        cursor.moveToFirst();
        String ImagePath = cursor.getString(Column_Index);
        Log.d(TAG,"ImagePath of "+ImagePath);
        cursor.close();
        return ImagePath;
    }

我也尝试了this this以及其他许多人,但是从uri获取文件路径始终为空。

Uri从Intent返回:content:// com.android.providers.media.documents / document / image%3A2304`

1 个答案:

答案 0 :(得分:3)

  

我研究了几种从uri获取文件路径的方法,但它总是返回null

没有文件路径。 Uri不是文件。

使用ContentResolveropenInputStream()获取InputStream标识的内容Uri。要么直接使用InputStream,要么在您控制的某个文件上使用FileOutputStream(例如,在getCacheDir()中)将内容复制到文件中,然后使用生成的文件。