Per offrire in modo sicuro un file dalla tua app a un'altra app, devi configurare l'app in modo che
    un handle sicuro per il file, sotto forma di URI dei contenuti. Android
    Il componente FileProvider genera URI dei contenuti per
    basati su specifiche che fornisci in XML. Questa lezione mostra come aggiungere
    implementazione di FileProvider nella tua app e scoprire come
    specificare i file che vuoi offrire ad altre app.
  Nota: il corso FileProvider fa parte della
  Libreria AndroidX Core. Per informazioni
  sull'inclusione di questa libreria nell'applicazione, vedi
  Dichiarare le dipendenze.
Specifica il fileProvider
    Per definire un FileProvider per la tua app è necessario inserire una voce in
    del file manifest. Questa voce specifica l'autorità da utilizzare nella generazione degli URI dei contenuti, nonché
    il nome di un file XML che specifica le directory che la tua app può condividere.
    Il seguente snippet mostra come aggiungere al file manifest
    L'elemento <provider> che specifica
    FileProvider, l'autorità e la
    Nome del file XML:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application ...> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.myapp.fileprovider" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider> ... </application> </manifest>
    In questo esempio, l'attributo android:authorities specifica l'autorità URI
    da utilizzare per gli URI dei contenuti generati
    FileProvider.
    Nell'esempio, l'autorità è com.example.myapp.fileprovider. Per te
    specifica un'autorità composta dall'autorità di controllo dell'app
    Valore android:package con la stringa "fileprovider" aggiunti. Per scoprire di più
    sul valore dell'autorità, consulta l'argomento
    URI dei contenuti e la documentazione per i
    android:authorities.
    L'elemento secondario <meta-data> di
    <provider> punta a un file XML che specifica le directory da
    condividi. L'attributo android:resource corrisponde al percorso e al nome del file, senza
    l'estensione .xml.I contenuti di questo file sono descritti nella prossima sezione.
Specifica directory condivisibili
    Dopo aver aggiunto FileProvider al file manifest dell'app,
    devi specificare le directory che contengono i file che vuoi condividere. Per specificare
    crea il file filepaths.xml nell'elemento res/xml/
    secondaria del tuo progetto. In questo file, specifica le directory aggiungendo un elemento XML per
    ogni directory. Lo snippet che segue mostra un esempio dei contenuti
    res/xml/filepaths.xml. Lo snippet mostra anche come condividere una sottodirectory
    della directory files/ nella memoria interna:
<paths> <files-path path="images/" name="myimages" /> </paths>
    In questo esempio, il tag <files-path> condivide le directory all'interno della sezione
    directory files/ della memoria interna dell'app. Attributo path
    condivide la sottodirectory images/ di files/.  name
    indica a FileProvider di aggiungere il segmento del percorso
    myimages agli URI dei contenuti per i file nella sottodirectory files/images/.
    L'elemento <paths> può avere più elementi secondari, ognuno dei quali specifica un
    la directory da condividere. Oltre all'elemento <files-path>, puoi:
    utilizzare l'elemento <external-path> per condividere le directory in un dispositivo di archiviazione esterno, e
    L'elemento <cache-path> per condividere le directory nella cache interna
    . Per saperne di più sugli elementi secondari che specificano le directory condivise, consulta
    documentazione di riferimento di FileProvider.
Nota: il file XML è l'unico modo in cui puoi specificare le directory in cui vuoi condividi; non puoi aggiungere una directory in modo programmatico.
    Ora hai una specifica completa di FileProvider
    che genera URI dei contenuti per i file nella directory files/ del percorso
    memoria interna o per i file nelle sottodirectory di files/. Quando la tua app genera
    un URI contenuti per un file, contiene l'autorità specificata nel
    <provider> elemento (com.example.myapp.fileprovider),
    il percorso myimages/ e il nome del file.
    Ad esempio, se definisci un valore FileProvider secondo
    gli snippet di questa lezione e richiederai un URI dei contenuti per il file
    default_image.jpg, FileProvider restituisce il valore
    seguente URI:
content://com.example.myapp.fileprovider/myimages/default_image.jpg
Per ulteriori informazioni correlate, consulta: