Android Destek kitaplığının FileProvider'ı kullanarak dahili bir dosyayı harici uygulama ile doğru bir şekilde (AÇIK değil) paylaşmak için bir yol arıyorum .
Dokümanlardaki örneği takip ederek,
<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>
ve bir dosyayı aşağıdaki gibi diğer uygulamalarla paylaşmak için ShareCompat'ı kullanma:
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
çalışmıyor, çünkü FLAG_GRANT_READ_URI_PERMISSION ekstraın data
değerini EXTRA_STREAM
(tarafından ayarlandığı gibi setStream
) değil, yalnızca niyette belirtilen Uri için izin verir .
Ben ayarlayarak uzlaşı güvenlik çalıştı android:exported
üzere true
sağlayıcı, ama FileProvider
kendisi ihraç eğer içten çekler, bu nedenle zaman, bir istisna atar.