web-dev-qa-db-fra.com

Je reçois IllegalArgumentException lors de la sélection d'un fichier de document dans le gestionnaire de téléchargement, ce qui se produit uniquement pour oreo

Ici, je joins les journaux:

   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)

J'utilise ce code qui fonctionne bien, mais dans le cas du gestionnaire de téléchargement, il lance une exception à la première ligne du bloc `` essayer ''

 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;

J'ai déjà essayé ceci: Android obtenant le chemin du fichier depuis l'URI de contenu en utilisant contentResolver et ceci: Java.lang.IllegalArgumentException: contenu URI inconn et quelques autres liés à cette question mais pas n'importe quel l'un d'eux résout mon problème.

9
Ajay Chauhan

J'obtenais la même erreur Unknown URI: content://downloads/public_downloads. J'ai réussi à résoudre ce problème en modifiant contentUri et en utilisant les méthodes InputStream pour extraire le fichier du répertoire de téléchargement. Sur certains appareils, changer contentUri en content://downloads/my_downloads travaux. Consultez cette réponse pour une solution complète .

8