Saya mencari cara untuk membagikan (bukan OPEN) file internal dengan aplikasi eksternal menggunakan FileProvider pustaka Dukungan Android .
Mengikuti contoh pada dokumen,
<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>
dan menggunakan ShareCompat untuk berbagi file ke aplikasi lain sebagai berikut:
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
tidak berfungsi, karena FLAG_GRANT_READ_URI_PERMISSION hanya memberikan izin untuk Uri yang ditentukan pada data
maksud, bukan nilai EXTRA_STREAM
tambahan (seperti yang ditetapkan oleh setStream
).
Saya mencoba untuk keamanan kompromi dengan menetapkan android:exported
untuk true
untuk penyedia, tetapi FileProvider
secara internal memeriksa apakah itu sendiri diekspor, ketika begitu, itu melempar pengecualian.