I have been trying to follow the Android tutorial on sharing files.
I set up the FileProvider
like this:
On the main manifest xml:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.mysecondapp.fileprovider"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
the res/xml/filpaths.xml file:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="myexternalimages" path="SpCars_album/" />
</paths>
And in my code I am trying the following:
File requestFile = new File(mImageFilenames[position]);
try {
fileUri = FileProvider.getUriForFile(
SeventhActivity.this,
"com.example.mysecondapp.fileprovider",
requestFile);
} catch (IllegalArgumentException e) {
Log.e("File Selector",
"The selected file can't be shared: " +
mImageFilenames[position]);
}
The requestFile is instantiated with a proper working path for a file.
The path of that file begins exactly with what getExternalFilesDir(Environment.DIRECTORY_PICTURES)
returns.
I just cant understand what raises the error because everything seems to fit.
Thanks in advance.
The path of that file begins exactly with what getExternalFilesDir(Environment.DIRECTORY_PICTURES) returns.
AFAIK, that will not give you a directory named SpCars_album/
.
I just cant understand what raises the error because everything seems to fit.
The file you supplied is not one that can be served by the FileProvider
from your defined roots.
UPDATE
I forgot that this is tied to a documentation bug on FileProvider
. FileProvider
and <external-path>
does NOT serve files from getExternalFilesDir()
, but instead from Environment.getExternalStorageDirectory()
. I created a StreamProvider
subclass that offers support for getExternalFilesDir()
.
If you use my StreamProvider
, replacing your <external-path>
with <external-files-path name="myexternalimages" path="Pictures/SpCars_album/" />
, you should have better luck.