To solve this ERROR you need to set your sdk 24 and up, if you need to get the Uri of a file outside your app storage you have this error. However if you want to follow the google guideline without having to change the API policy of your app you have to use a FileProvider. At first to get the URI of a file you need to use FileProvider.getUriForFile() method:
Uri imageUri = FileProvider.getUriForFile(
MainActivity.this,
"com.example.homefolder.example.provider", //(use your app signature + ".provider" ) imageFile);
Then you need to configure who is your provider in your android manifest :
<application>
…
<provider
android:name="android.support.v4.content.FileProvider" android:authorities="com.example.homefolder.example.provider" android:exported="false" android:grantUriPermissions="true">
<!-- ressource file to create -->
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths">
</meta-data>
</provider>
</application>
(In "authorities" use the same value than the second argument of the getUriForFile() method (app signature + ".provider"))
And finally you need to create the resources file: "file_paths". This file need to be created under the res/xml directory:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>