web-dev-qa-db-ja.com

ダウンロードマネージャーからドキュメントファイルを選択しているときにIllegalArgumentExceptionが発生します。これはoreoでのみ発生します

ここにログを添付しています:

   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がcontentResolverを使用してコンテンツURIからファイルパスを取得する およびこれ: Java.lang.IllegalArgumentException:Unknown URI content およびこの質問に関連するが、他にはないそれらの1つは私の問題を解決します。

9
Ajay Chauhan

同じエラーUnknown URI: content://downloads/public_downloadsが発生していました。 contentUriを変更し、InputStreamメソッドを使用してダウンロードディレクトリからファイルを取得することで、この問題を解決できました。一部のデバイスでは、contentUriをcontent://downloads/my_downloadsに変更すると機能します。 完全なソリューションについてはこの回答をご覧ください