Tôi đang tìm cách chia sẻ chính xác (không phải MỞ) một tệp nội bộ với ứng dụng bên ngoài bằng FileProvider của thư viện Hỗ trợ Android .
Theo ví dụ về các tài liệu,
<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>
và sử dụng ShareCompat để chia sẻ tệp cho các ứng dụng khác như sau:
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
không hoạt động, vì FLAG_GRANT_READ_URI_PERMISSION chỉ cấp quyền cho Uri được chỉ định trên data
mục đích, không phải giá trị của phần EXTRA_STREAM
bổ sung (như đã được đặt bởi setStream
).
Tôi cố gắng để bảo vệ sự thỏa hiệp bằng cách thiết lập android:exported
để true
cho nhà cung cấp, nhưng FileProvider
trong nội bộ kiểm tra xem bản thân được xuất khẩu, khi như vậy, nó ném một ngoại lệ.