代码之家  ›  专栏  ›  技术社区  ›  Ajay Chauhan

我在从下载管理器中选择文档文件时遇到IllegalArgumentException,这只发生在Oreo上

  •  4
  • Ajay Chauhan  · 技术社区  · 7 年前

    我在这里附上日志:

       Caused by: java.lang.IllegalArgumentException: Unknown URI: content://downloads/public_downloads/1587
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
        at android.content.ContentProviderProxy.query(ContentProviderNative.java:418)
    

    我使用的代码运行良好,但对于下载管理器,它在“try”块的第一行引发异常

     Cursor cursor = null;
        final String column = "_data";
        final String[] projection = {
                column
        };
    
        try {
            cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
                    null);
            if (cursor != null && cursor.moveToFirst()) {
                final int column_index = cursor.getColumnIndexOrThrow(column);
                return cursor.getString(column_index);
            }
        } finally {
            if (cursor != null)
                cursor.close();
        }
        return null;
    

    我已经试过了: Android getting file path from content URI using contentResolver 而这: java.lang.IllegalArgumentException: Unknown URI content 还有一些和这个问题有关,但没有一个能解决我的问题。

    1 回复  |  直到 7 年前
        1
  •  7
  •   karanatwal.github.io    7 年前

    我也犯了同样的错误 Unknown URI: content://downloads/public_downloads . 我通过更改contenturi和使用 InputStream 方法从下载目录中获取文件。在某些设备中将contenturi更改为 content://downloads/my_downloads 作品。 Checkout this answer for full solution .