【问题标题】:Intent.ACTION_GET_CONTENT opens recent files which gives a bad URIIntent.ACTION_GET_CONTENT 打开最近的文件,它给出了一个错误的 URI
【发布时间】:2015-08-24 18:42:29
【问题描述】:

我正在使用Intent.ACTION_GET_CONTENT 打开最近的文件。从最近的文件中选择项目会给出一个错误的 URI,但从文件管理器中选择相同的文件会给出一个正确的 URI,可以由我的代码处理。

public static String getRealPathFromURI(Context context, Uri uri) {
    String path;
    if ("content".equals(uri.getScheme())) {
        Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
        cursor.moveToFirst();
        int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
        path = cursor.getString(idx);
        cursor.close();
    } else {
        path = uri.getPath();
    }

    return path;
}

注意:当我从最近的文件中选择 PDF 时,uri.getPath() 的输出是 /document/...,但从文件管理器中选择相同的文件是 .../emulated/...

注意:从最近的文件中选择文件时的错误是

无法从 CursorWindow 读取第 0 行 col -1。确保 Cursor 在从中访问数据之前已正确初始化。

【问题讨论】:

    标签: android android-intent android-cursor android-contentresolver


    【解决方案1】:

    问题是我的代码无法处理 Android 的新布局存储 URI。如果你也遇到这个问题,请参考this link,因为作者写了一个很棒的方法来获取每个URI的真实路径。

    【讨论】:

    • 非常感谢!您的链接文章帮助我解决了问题。
    猜你喜欢
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 2012-10-06
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多