Mahsa Mahsa -4 years ago 103
Android Question

Android share app's apk using FileProvider

I've tried to share the app's apk file through intent.The provider in my manifest file:

`<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="package name"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/mypaths" />



and the mypaths file is:

<paths>
<external-path name="apk_folder"/>
</paths>


I set intent and the File path as below:

String packageName = getContext().getPackageName();
PackageManager pm = getContext().getPackageManager();
String apk = null;
try {
ApplicationInfo ai = pm.getApplicationInfo(packageName, 0);
apk = ai.publicSourceDir;

} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
File apkFile = new File(apk);

Uri uri = FileProvider.getUriForFile(getContext(), "package name", apkFile);

Intent intent = ShareCompat.IntentBuilder.from(getActivity())
.setType("*/*")
.setStream(uri)
.setChooserTitle("Share via")
.createChooserIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

startActivity(intent);


I get IllegalArgumentException :


Failed to find configured root that contains /data/app/package name.edu-1/base.apk


Please help me to find out my mistakes.

Answer Source

There is no available root in FileProvider that will handle your designated location. You would need to create your own ContentProvider for this.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download