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