Estoy buscando una manera de compartir correctamente (no ABRIR) un archivo interno con una aplicación externa utilizando FileProvider de la biblioteca de soporte de Android .
Siguiendo el ejemplo en los 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>
y usar ShareCompat para compartir un archivo con otras aplicaciones de la siguiente manera:
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
no funciona, ya que FLAG_GRANT_READ_URI_PERMISSION solo otorga permiso para el Uri especificado en data
la intención, no el valor del EXTRA_STREAM
extra (como fue establecido por setStream
).
Traté de comprometer la seguridad mediante el establecimiento android:exported
de true
para el proveedor, pero FileProvider
internamente comprueba si misma es exportada, cuando es así, se produce una excepción.