Ich suche nach einer Möglichkeit, eine interne Datei mit dem FileProvider der Android Support Library korrekt für eine externe Anwendung freizugeben (nicht zu öffnen) .
Folgen Sie dem Beispiel in den Dokumenten,
<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>
und Verwenden von ShareCompat zum Freigeben einer Datei für andere Apps wie folgt:
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
funktioniert nicht, da FLAG_GRANT_READ_URI_PERMISSION nur die Berechtigung für den auf der data
Absicht angegebenen Uri erteilt , nicht den Wert des EXTRA_STREAM
Extra (wie von festgelegt setStream
).
Ich habe versucht, Kompromisse Sicherheit , indem android:exported
an true
für den Anbieter, sondern FileProvider
intern überprüft , ob sich exportiert wird, wenn dem so ist , wirft es eine Ausnahme.