I've run into the FileUriExposedException stuff where you try to send a file:/// Uri to another app (in this case the camera), and I should be using a FileProvider instead (causes a crash on api 24 Nougat).
In our app, we generate a File using Context's getExternalFilesDir(String) method:
context.getExternalFilesDir("attachments");
The FileProvider documentation leads me to believe I should be using external-files-path in my paths.xml if I want the functionality to be the same as is now.
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path
name="attachments"
path="attachments/" />
</paths>
But after googling some more, I found a few things that make me think there's issues with FileProvider, or at least FileProvider's documentation...
external-files-dir https://github.com/commonsguy/cwac-provider#metadata-elementsjava.lang.IllegalArgumentException: Failed to find configured root that contains ... right now, but that might be caused by something else.So
external-files-path if I want to match how my app currently works?UPDATE
For completeness, as @CommonsWare recommended below, using the 24.2.0 version of support-v4 is working for me.
Am I right in thinking I should use external-files-path if I want to match how my app currently works?
Yes. Though do note that getExternalFilesDir() does not officially support "attachments" as a parameter, so do not be surprised if your app breaks someday.
Is the documentation/FileProvider really broken/incorrect
Well, I see the code for external-files-path support in the sources JAR for 24.2.0 of the new support-core-utils artifact. support-v4, as of 24.2.0, has been subdivided into a series of separate artifacts, and FileProvider lives in support-core-utils.
So, try using 24.2.0 of support-v4 (or support-core-utils if you do not need all of support-v4).