android.support.v4.content.FileProvider not found

JavaAndroidAndroid Fileprovider

Java Problem Overview


I am trying to upgrade a working old app to support Android API 26, and one of the thing I need to use is android.support.v4.content.FileProvider - but it was not found.

    <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>

Due to the early Android build, the gradle file seems simple. Is it as simple as adding a dependency? I have look around and some suggested adding a multidex which I don't understand. Any help is appreciated, thank you!

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'
        }
    }
}

Java Solutions


Solution 1 - Java

As of AndroidX (the repackaged Android Support Library), the path is androidx.core.content.FileProvider so the updated provider tag would be:

<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>

Android Support Libraries are now in the androidx.* package hierarchy.

android.* is now reserved to the built-in Android System Libraries.

Solution 2 - Java

Instead of

import android.support.v4.content.FileProvider;

Try importing

import androidx.core.content.FileProvider;

Solution 3 - Java

Using the following commands solved my issue:

npm install jetifier --save
npx jetify
npx cap sync

Solution 4 - Java

I replaced it with the newer version, which is : androidx.core.content.FileProvider

This worked for me.

Solution 5 - Java

add compile 'com.android.support:support-v4:26.1.0' to build.gradle file in app module.

Solution 6 - Java

Change to

public class FileProvider extends androidx.core.content.FileProvider {
}

Solution 7 - Java

for androidx

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

Solution 8 - Java

Create your class

import android.support.v4.content.FileProvider;

public class GenericFileProvider extends FileProvider {
}

Add this provider into your AndroidManifest.xml under application tag:

<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>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLim Thye CheanView Question on Stackoverflow
Solution 1 - JavaAndreView Answer on Stackoverflow
Solution 2 - JavaDeepak BhavsarView Answer on Stackoverflow
Solution 3 - JavaSaransh KumarView Answer on Stackoverflow
Solution 4 - JavaHashim AkhtarView Answer on Stackoverflow
Solution 5 - JavaWill TangView Answer on Stackoverflow
Solution 6 - JavaZahirul HaqueView Answer on Stackoverflow
Solution 7 - JavaGinanjar SetiawanView Answer on Stackoverflow
Solution 8 - JavaPavyaView Answer on Stackoverflow