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.

Antworten auf die Frage(9)

Ihre Antwort auf die Frage