Sto cercando un modo per condividere correttamente (non APERTO) un file interno con un'applicazione esterna utilizzando FileProvider della libreria di supporto Android .
Seguendo l'esempio sui documenti,
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.android.supportv4.my_files"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/my_paths" />
</provider>
e usando ShareCompat per condividere un file con altre app come segue:
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
non funziona, poiché FLAG_GRANT_READ_URI_PERMISSION concede solo l'autorizzazione per l'URI specificato sull'intento data
, non il valore EXTRA_STREAM
dell'extra (come impostato da setStream
).
Ho provato a compromettere la sicurezza impostando android:exported
su true
per il provider, ma FileProvider
controlla internamente se stesso viene esportato, in tal caso genera un'eccezione.