2015-12-26 6 views
6

मेरी Android एप्लिकेशन में, मैं Environment.getExternalStorageDirectory() + "\MyApp" निर्देशिका के लिए कुछ फ़ाइलें सहेजें। यह एंड्रॉइड 6 marshmallow अद्यतन तक ठीक काम किया। Marshmallow अद्यतन के बाद, मैं इस निर्देशिका में नहीं लिख सकता।क्या मुझे marshmallow में getExternalFilesDir() पथ में लिखने के लिए रनटाइम अनुमति जांच की आवश्यकता है?

जैसा कि this उत्तर में वर्णित है, marshmallow में, ऐप्स को बाहरी संग्रहण पर लिखने से पहले रनटाइम पर उपयोगकर्ता से अनुमति मांगनी होगी।

लेकिन, जब मैं context.getExternalFilesDir(null) बजाय Environment.getExternalStorageDirectory() उपयोग करते हैं, मैं क्रम में किसी भी अनुमति के लिए पूछने की जरूरत नहीं है और यह सिर्फ काम करता है (context.getExternalFilesDir(null) से लौटे पथ बाह्य भंडारण निर्देशिका के अंदर भी है)।

इस एक संयोग किसी तरह का है या मैं कार्यावधि में अनुमति बिना पूछे context.getExternalFilesDir(null) लिखने के लिए जारी रख सकते हैं?

+0

के लिए अनुमतियों की जाँच करने की कोई जरूरत क्या तुम सच में एंड्रॉयड 6 पर अनुमति देने का अनुरोध बिना बाह्य भंडारण के लिए फ़ाइलों को लिखने में सक्षम हैं? –

उत्तर

8

documentation कहता है:

किटकैट में शुरू, कोई अनुमति पढ़ने के लिए या लौटे पथ के लिए लिखने के लिए आवश्यक हैं, यह हमेशा कॉलिंग ऐप के लिए सुलभ है। यह केवल एप्लिकेशन के कॉलिंग नाम के लिए जेनरेट किए गए पथ पर लागू होता है। अन्य संकुल से संबंधित पथों तक पहुंचने के लिए, WRITE_EXTERNAL_STORAGE और/या READ_EXTERNAL_STORAGE आवश्यक हैं।

आप एंड्रॉइड 4.4+ पर getExternalFilesDir() पर किसी भी अनुमति की आवश्यकता के बिना पढ़ने/लिखने के लिए उपयोग/लिखना होगा।

मैं अगर तुम निम्नतर API स्तरों का समर्थन करने की जरूरत है एक FileProvider का उपयोग कर की सिफारिश करेंगे।

+0

मैं एपीआई 25 को लक्षित कर रहा हूँ, लेकिन एपीआई 16 करने के लिए नीचे समर्थन करते हैं, तो मैं अभी भी प्रकट में 'WRITE_EXTERNAL_STORAGE' अनुमति घोषित करने के लिए और क्या ज़रूरत है तो बस कार्यावधि में अनुमति के लिए पूछने नहीं? – ankushg

0

मुझे पता है अनुमति प्रस्तुत कर रहे हैं एंड्रॉयड 6 के बाद से शुरू कर दिया और ऊपर तो एपीआई 16

संबंधित मुद्दे