I have integrated Snapchat\'s Creative Kit in my Android app. After processing, I receive an image from the server in the form of Byte Array which I am saving to the disk an
In My Case;
Manifest File:
<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>
Code:
import androidx.multidex.BuildConfig // NOT DO THIS!!!
val uri = FileProvider.getUriForFile(this,
BuildConfig.APPLICATION_ID+ ".provider", _tempFile)
Exception:
java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority androidx.multidex.provider
Do not use androidx.multidex.BuildConfig, Because this values are not the values of our application:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package androidx.multidex;
public final class BuildConfig {
public static final boolean DEBUG = false;
public static final String APPLICATION_ID = "androidx.multidex";
public static final String BUILD_TYPE = "release";
public static final String FLAVOR = "";
public static final int VERSION_CODE = -1;
public static final String VERSION_NAME = "";
public BuildConfig() {
}
}
mImageFromCamera = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".fileprovider", mImageFile); android:authorities="${applicationId}.fileprovider"
authorities must be same in xml and in code
Change the authorities to a unique name to solve the issue like
android:authorities="${applicationId}.myUniquefileprovider"
also in java code
In my case.
I have a library project .Let's call it :LibApk
When I code this : applicationId "my.package.name" in the build.grale(app)
when build gradle tell me that : Library projects cannot set applicationId.
applicationId is set to 'com.darcy.apkupdate' in default config.
So ,I delete applicationId "my.package.name" .
Then ,build.gradle look like this :
But I forgot update the AndroidManifest.xml file which use ${applicationId}
This is the problem!!!
So I changed the variable to constant .The result looks like below picture:
After This ,It's wokr for me!
Hope this is help you...