从下载管理器选择文档文件时,我遇到了“IllegalArgumentException”错误,这仅在Oreo版本发生。

21

这里我正在附上日志:

   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)

我正在使用这段代码,它运行得很好。但是对于下载管理器的情况,它会在“尝试”块的第一行抛出异常。

 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使用contentResolver从content URI获取文件路径 和这个:java.lang.IllegalArgumentException: Unknown URI content 还有一些与此问题相关的其他内容,但没有一个可以解决我的问题。


你在这行代码 query(uri, projection, selection, selectionArgs, null); 中获取到了所有所需的东西吗? - Ümañg ßürmån
我发送的是uri和projection,但selection和selctionArgs为空,我认为这不会造成问题。 - Ajay Chauhan
似乎您的URI无效。 - Ümañg ßürmån
我知道,但是为什么其他版本都能正常工作呢? - Ajay Chauhan
我认为最好的选择是使用DocumentTree。 - Ümañg ßürmån
@AjayChauhan你有找到任何解决方案吗?请帮我一下。我也遇到了同样的错误。 - Menu
1个回答

19

我遇到了相同的错误 Unknown URI: content://downloads/public_downloads。通过更改 contentUri 并使用 InputStream 方法从 Download 目录获取文件,我设法解决了这个问题。在某些设备上,将 contentUri 更改为 content://downloads/my_downloads 可以解决此问题。查看此答案以获取完整解决方案


只是出于好奇,你是否也只在运行8.0的设备上遇到了这个问题?最近我在Crashlytics上看到在运行8.0的设备上出现了这个问题。 - HB.
是的,这个问题来自于Android 8.0。 - Zinc
我在使用Flutter Image picker时遇到了问题,该如何解决? - ibexy
21
我创建了一个修复此问题的 GitHub 代码片段 - https://gist.github.com/HBiSoft/15899990b8cd0723c3a894c1636550a8。 - HB.
1
我在第94行左右的变量'filename'处遇到了错误。:( - Koushik Shom Choudhury
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接