मैं एंड्रॉइड सपोर्ट लाइब्रेरी के फाइलप्रॉइडर का उपयोग करके बाहरी एप्लिकेशन के साथ एक आंतरिक फ़ाइल को सही ढंग से साझा नहीं करने (ओपेन न करने) का रास्ता खोज रहा हूं ।
डॉक्स पर उदाहरण के बाद,
<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 केवल data
इरादे पर निर्दिष्ट उरी के लिए अनुमति देता है , EXTRA_STREAM
अतिरिक्त का मान नहीं (जैसा कि निर्धारित किया गया था setStream
)।
मैं निर्धारित करके समझौता सुरक्षा करने की कोशिश की android:exported
करने के लिए true
प्रदाता के लिए है, लेकिन FileProvider
आंतरिक रूप से जांच करता है कि खुद को निर्यात किया जाता है, जब ऐसा है, तो यह एक अपवाद फेंकता है।