Como usar o suporte FileProvider para compartilhar conteúdo para outros aplicativos?
Eu estou procurando uma maneira de compartilhar corretamente (não abrir) um arquivo interno com aplicativo externo usando biblioteca de suporte AndroidFileProvider.
Seguindo o exemplo nos documentos,
<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 para compartilhar um arquivo para outros aplicativos da seguinte forma:
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
não funciona, pois o FLAG_GRANT_READ_URI_PERMISSION só concede permissão para o Uri especificado nodata
da intenção, não o valor doEXTRA_STREAM
extra (como foi definido porsetStream
).
Eu tentei comprometer a segurança definindoandroid:exported
paratrue
para o provedor, masFileProvider
internamente verifica se ele é exportado, quando assim, lança uma exceção.