web-dev-qa-db-fra.com

android.support.v4.content.FileProvider introuvable

J'essaie de mettre à niveau une ancienne application fonctionnelle pour prendre en charge Android API 26, et l'une des choses que je dois utiliser est Android.support.v4.content.FileProvider - mais elle n'a pas été trouvée.

    <provider
        Android:name="Android.support.v4.content.FileProvider"
        Android:authorities="${applicationId}.fileprovider"
        Android:exported="false"
        Android:grantUriPermissions="true">
        <meta-data
            Android:name="Android.support.FILE_PROVIDER_PATHS"
            Android:resource="@xml/file_paths" />
    </provider>

En raison de la première Android, le fichier gradle semble simple. Est-ce aussi simple que d'ajouter une dépendance? J'ai regardé autour et certains ont suggéré d'ajouter un multidex que je ne comprends pas. Toute aide est apprécié, merci!

Android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'

    defaultConfig {
        applicationId "virtualgs.spaint"
        minSdkVersion 22
        targetSdkVersion 26
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
        }
    }
}
15
Lim Thye Chean

ajouter compile 'com.Android.support:support-v4:26.1.0' à build.gradle fichier dans le module d'application.

4
Will Tang

À partir d'AndroidX (la bibliothèque de support reconditionnée Android), le chemin d'accès est androidx.core.content.FileProvider donc la balise de fournisseur mise à jour serait:

<provider
    Android:name="androidx.core.content.FileProvider"
    Android:authorities="${applicationId}.fileprovider"
    Android:exported="false"
    Android:grantUriPermissions="true">
    <meta-data
        Android:name="Android.support.FILE_PROVIDER_PATHS"
        Android:resource="@xml/file_paths" />
</provider>

Les bibliothèques de support Android sont maintenant dans le androidx.* hiérarchie des packages.

Android.* est désormais réservé aux bibliothèques système intégrées Android.

65
Andre

Créez votre classe

import Android.support.v4.content.FileProvider;

public class GenericFileProvider extends FileProvider {
}

Ajoutez ce fournisseur dans votre AndroidManifest.xml sous la balise d'application:

<provider
      Android:name=".utilities.GenericFileProvider"
      Android:authorities="${applicationId}.utilities.GenericFileProvider"
      Android:exported="false"
      Android:grantUriPermissions="true">
         <meta-data
             Android:name="Android.support.FILE_PROVIDER_PATHS"
             Android:resource="@xml/provider_paths" />
</provider>
1
Pavya

Je l'ai remplacé par la nouvelle version, qui est: androidx.core.content.FileProvider

Cela a fonctionné pour moi.

0
Hashim Akhtar