Wie verwende ich den Support-FileProvider, um Inhalte für andere Apps freizugeben?
Ich suche nach einer Möglichkeit, eine interne Datei mithilfe der Android-Supportbibliothek ordnungsgemäß mit einer externen Anwendung zu teilen (nicht zu öffnen)FileProvider.
Dem Beispiel in den Dokumenten folgend,
<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 mit ShareCompat wie folgt eine Datei für andere Apps freigeben:
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
funktioniert nicht, da die FLAG_GRANT_READ_URI_PERMISSION nur die Erlaubnis für die auf dem angegebenen Uri erteiltdata
der Absicht, nicht der Wert derEXTRA_STREAM
extra (wie eingestellt vonsetStream
).
Ich habe versucht, die Sicherheit durch Einstellen zu gefährdenandroid:exported
zutrue
für den anbieter, aberFileProvider
Prüft intern, ob selbst exportiert wird. Wenn dies der Fall ist, wird eine Ausnahme ausgelöst.