Я шукаю спосіб правильно поділитися (не ВІДКРИТИ) внутрішній файл із зовнішнім додатком за допомогою FileProvider бібліотеки підтримки Android .
Дотримуючись прикладу в документах,
<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>
та використовуючи ShareCompat для обміну файлом з іншими програмами наступним чином:
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
не працює, оскільки FLAG_GRANT_READ_URI_PERMISSION надає лише дозвіл на Uri, вказаний на data
намірі, а не значення EXTRA_STREAM
додаткового (як було встановлено setStream
).
Я намагався компромісною безпеки, встановивши android:exported
в true
для постачальника, але FileProvider
внутрішньо перевіряє , є чи сам по собі йде на експорт, якщо це так, то кидає виняток.