9
จะใช้การสนับสนุน FileProvider เพื่อแชร์เนื้อหาไปยังแอพอื่น ๆ ได้อย่างไร?
ฉันกำลังมองหาวิธีการอย่างถูกต้องหุ้น (ไม่เปิด) ไฟล์ภายในกับโปรแกรมภายนอกใช้ห้องสมุดสนับสนุน Android ของFileProvider ทำตามตัวอย่างในเอกสาร <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ภายในตรวจสอบว่าตัวเองจะถูกส่งออกเมื่อเป็นเช่นนั้นก็พ่นยกเว้น