Android डिवाइस में स्टोरेज के इस्तेमाल के उदाहरण और सबसे सही तरीके

उपयोगकर्ताओं को उनकी फ़ाइलों पर ज़्यादा कंट्रोल देने और फ़ाइलों को आसानी से व्यवस्थित करने के लिए, Android 10 ने पेश किया, स्टोरेज का नया मॉडल दायरे वाला स्टोरेज. स्कोप वाले स्टोरेज में बदलाव डिवाइस के बाहरी स्टोरेज में ऐप्लिकेशन की फ़ाइलों को सेव और ऐक्सेस करने का तरीका. आपकी मदद करने के लिए अपने ऐप्लिकेशन को स्कोप वाले स्टोरेज की सुविधा देने के लिए माइग्रेट करें. आम तौर पर, Google Workspace for Education Plus इस गाइड में बताए गए, स्टोरेज के इस्तेमाल के उदाहरण. इस्तेमाल के उदाहरण, दो कैटगरी में बांटा गया है: मीडिया फ़ाइलों को मैनेज करना और मैनेज करना गैर-मीडिया फ़ाइलें.

Android पर फ़ाइलें सेव और ऐक्सेस करने के तरीके के बारे में ज़्यादा जानने के लिए, स्टोरेज ट्रेनिंग गाइड में बताया गया है.

मीडिया फ़ाइलें मैनेज करना

इस सेक्शन में, मीडिया फ़ाइलों को मैनेज करने के लिए, इस्तेमाल के कुछ सामान्य उदाहरण दिए गए हैं (वीडियो, इमेज, और ऑडियो फ़ाइलें) शामिल हैं. साथ ही, यह भी बताता है कि किस तरह ऐप इस्तेमाल कर सकता है. यहां दी गई टेबल में, इस्तेमाल के इन सभी उदाहरणों और लिंक के बारे में खास जानकारी दी गई है उन सेक्शन पर रीडायरेक्ट किया जा सकता है जिनमें ज़्यादा जानकारी शामिल है.

इस्तेमाल का उदाहरण खास जानकारी
सभी इमेज या वीडियो फ़ाइलें दिखाएं Android के सभी वर्शन के लिए यही तरीका अपनाएं.
किसी खास थीम से इमेज या वीडियो दिखाना फ़ोल्डर Android के सभी वर्शन के लिए यही तरीका अपनाएं.
इनसे जगह की जानकारी ऐक्सेस करें फ़ोटो अगर आपका ऐप्लिकेशन स्कोप वाले स्टोरेज का इस्तेमाल करता है, तो एक तरीका अपनाएं. किसी दूसरी इमेज का इस्तेमाल करें अगर आपका ऐप्लिकेशन, स्कोप वाले स्टोरेज से ऑप्ट आउट करता है, तो यह तरीका अपनाएं.
नए डाउनलोड के लिए, स्टोरेज की जगह तय करना अगर आपका ऐप्लिकेशन स्कोप वाले स्टोरेज का इस्तेमाल करता है, तो एक तरीका अपनाएं. किसी दूसरी इमेज का इस्तेमाल करें अगर आपका ऐप्लिकेशन, स्कोप वाले स्टोरेज से ऑप्ट आउट करता है, तो यह तरीका अपनाएं.
उपयोगकर्ता की मीडिया फ़ाइलों को किसी डिवाइस में एक्सपोर्ट करना Android के सभी वर्शन के लिए यही तरीका अपनाएं.
इसके अंदर की कई मीडिया फ़ाइलों में बदलाव करना या उन्हें मिटाना सिर्फ़ एक कार्रवाई Android 11 के लिए, एक तरीका अपनाएं. Android 10 के लिए, स्कोप से ऑप्ट आउट करें और Android 9 और इससे पहले के वर्शन के लिए, पुराने तरीके का इस्तेमाल करें.
पहले से मौजूद कोई एक इमेज इंपोर्ट करें मौजूद है Android के सभी वर्शन के लिए, यही तरीका अपनाएं.
एक इमेज कैप्चर करना Android के सभी वर्शन के लिए यही तरीका अपनाएं.
दूसरे ऐप्लिकेशन के साथ मीडिया फ़ाइलें शेयर करना Android के सभी वर्शन के लिए यही तरीका अपनाएं.
किसी ऐप्लिकेशन के साथ मीडिया फ़ाइलें शेयर करना Android के सभी वर्शन के लिए यही तरीका अपनाएं.
कोड या लाइब्रेरी से फ़ाइलें ऐक्सेस करें जो डायरेक्ट फ़ाइल पाथ का इस्तेमाल करते हैं Android 11 के लिए, एक तरीका अपनाएं. Android 10 के लिए, स्कोप से ऑप्ट आउट करें और Android 9 और इससे पहले के वर्शन के लिए, पुराने तरीके का इस्तेमाल करें.

एक से ज़्यादा फ़ोल्डर में मौजूद इमेज या वीडियो फ़ाइलें दिखाना

मीडिया कलेक्शन के बारे में क्वेरी करना query() का इस्तेमाल करके एपीआई. मीडिया फ़ाइलों को फ़िल्टर करने या क्रम से लगाने के लिए, projection, selection, selectionArgs, और sortOrder पैरामीटर.

किसी खास फ़ोल्डर से इमेज या वीडियो दिखाएं

इस तरीके का इस्तेमाल करें:

  1. ऐप्लिकेशन अनुमतियों का अनुरोध करें में बताए गए सबसे सही तरीके अपनाएं. READ_EXTERNAL_STORAGE के लिए अनुरोध करें अनुमति.
  2. इनके मान के आधार पर मीडिया फ़ाइलें वापस पाएं MediaColumns.DATA जिसमें डिस्क पर मीडिया आइटम का ऐब्सलूट फ़ाइल सिस्टम पाथ होता है.

ध्यान दें: मौजूदा मीडिया फ़ाइल को ऐक्सेस करते समय, DATA में से कॉलम में अपने लॉजिक के हिसाब से बदलाव करें. ऐसा इसलिए, क्योंकि इस वैल्यू का फ़ाइल पाथ मान्य है. हालांकि, यह न मानें कि फ़ाइल हमेशा उपलब्ध होती है. मैनेज करने के लिए तैयार रहें फ़ाइलों पर आधारित I/O से जुड़ी गड़बड़ियां हो सकती हैं.

मीडिया फ़ाइल बनाने या अपडेट करने के लिए, दूसरी ओर, इस्तेमाल न करें DATA कॉलम. इसके बजाय, DISPLAY_NAME और RELATIVE_PATH कॉलम.

फ़ोटो से जगह की जानकारी ऐक्सेस करें

अगर आपका ऐप्लिकेशन, स्कोप वाले स्टोरेज का इस्तेमाल करता है, तो जगह की जानकारी की जानकारी में दिया गया तरीका अपनाएं फ़ोटो में सेक्शन पर जाएं.

नए डाउनलोड को सेव करने की जगह तय करें

अगर आपका ऐप्लिकेशन, स्कोप वाले स्टोरेज का इस्तेमाल करता है, तो ध्यान रखें कि आपको कौनसी जगह चुननी है डाउनलोड की गई मीडिया फ़ाइलों को सेव करने के लिए.

अगर दूसरे ऐप्लिकेशन को फ़ाइलें ऐक्सेस करने की ज़रूरत है, तो अच्छी तरह से तैयार मीडिया का इस्तेमाल करें कलेक्शन: डाउनलोड या दस्तावेज़ के कलेक्शन के लिए.

Android 11 और उसके बाद वाले वर्शन में, आपके संगठन से बाहर के ऐप्लिकेशन में मौजूद फ़ाइलें डायरेक्ट्री अन्य ऐप्लिकेशन के लिए ऐक्सेस नहीं की जा सकती, भले ही आप DownloadManager का इस्तेमाल इन फ़ाइलों को लाएं.

उपयोगकर्ता की मीडिया फ़ाइलों को किसी डिवाइस में एक्सपोर्ट करना

उपयोगकर्ता के मीडिया को सेव करने के लिए, सही डिफ़ॉल्ट जगह तय करें फ़ाइलें:

एक ही कार्रवाई में कई मीडिया फ़ाइलों में बदलाव करें या उन्हें मिटाएं

अपने ऐप्लिकेशन के Android वर्शन के आधार पर लॉजिक शामिल करें.

Android 11 पर चल रहा है

इस तरीके का इस्तेमाल करें:

  1. इसका इस्तेमाल करके अपने ऐप्लिकेशन के लिखने या मिटाने के लिए, मंज़ूरी बाकी वाला इंटेंट बनाएं MediaStore.createWriteRequest() या MediaStore.createTrashRequest() और फिर उसे चालू करके, उपयोगकर्ता से फ़ाइलों के सेट में बदलाव करने की अनुमति मांगें इंटेंट.
  2. उपयोगकर्ता के जवाब का आकलन करें:

    • अगर अनुमति मिल गई है, तो बदलाव करें या मिटाएं कार्रवाई करें.
    • अगर अनुमति नहीं मिली है, तो उपयोगकर्ता को बताएं कि आपके ऐप्लिकेशन को अनुमति चाहिए.

मीडिया के ग्रुप मैनेज करने के तरीके के बारे में ज़्यादा जानें फ़ाइलों का इस्तेमाल करने से जो Android 11 और इसके बाद वाले वर्शन में उपलब्ध हैं.

Android 10 पर चल रहा है

अगर आपका ऐप्लिकेशन Android 10 (एपीआई लेवल 29) को टारगेट करता है, तो स्कोप वाले स्कोप से ऑप्ट-आउट करें डिवाइस की मेमोरी और Android 9 के लिए इस तरीके का इस्तेमाल करना जारी रखें और इससे कम का इस्तेमाल करें.

Android 9 या इससे पहले के वर्शन पर चल रहा है

इस तरीके का इस्तेमाल करें:

  1. ऐप्लिकेशन अनुमतियों का अनुरोध करें में बताए गए सबसे सही तरीके अपनाएं. WRITE_EXTERNAL_STORAGE के लिए अनुरोध करें अनुमति.
  2. बदलाव करने के लिए, MediaStore एपीआई का इस्तेमाल करें या मीडिया फ़ाइलों को मिटाया जा सकता है.

पहले से मौजूद एक इमेज इंपोर्ट करें

जब आप पहले से मौजूद कोई एक इमेज इंपोर्ट करना चाहें (उदाहरण के लिए, प्रोफ़ाइल फ़ोटो के रूप में) है, तो आपका ऐप्लिकेशन कार्रवाई हो सकती है या यह सिस्टम पिकर का इस्तेमाल कर सकती है.

अपना यूज़र इंटरफ़ेस दिखाएं

इस तरीके का इस्तेमाल करें:

  1. ऐप्लिकेशन अनुमतियों का अनुरोध करें में बताए गए सबसे सही तरीके अपनाएं. READ_EXTERNAL_STORAGE के लिए अनुरोध करें अनुमति.
  2. query() का इस्तेमाल करें मीडिया कलेक्शन के बारे में क्वेरी करने के लिए एपीआई.
  3. नतीजों को अपने ऐप्लिकेशन के पसंद के मुताबिक बनाए गए यूज़र इंटरफ़ेस (यूआई) में दिखाएं.

सिस्टम पिकर का इस्तेमाल करना

ACTION_GET_CONTENT का इस्तेमाल करें इंटेंट, जो उपयोगकर्ता को इंपोर्ट करने के लिए कोई इमेज चुनने के लिए कहता है.

अगर आपको उन इमेज को फ़िल्टर करना है जिन्हें सिस्टम पिकर, में से चुनना है, तो setType() या EXTRA_MIME_TYPES.

कोई एक इमेज कैप्चर करें

जब आपको अपने ऐप्लिकेशन में इस्तेमाल करने के लिए कोई एक इमेज कैप्चर करनी हो, जैसे कि फ़ोटो के रूप में) है, तो इसका उपयोग करें ACTION_IMAGE_CAPTURE फिर भी पूछें. सिस्टम कैप्चर की गई फ़ोटो को इसमें सेव करता है MediaStore.Images टेबल.

अन्य ऐप्लिकेशन के साथ मीडिया फ़ाइलें शेयर करें

इसका इस्तेमाल करें insert() तरीका है. ज़्यादा जानकारी के लिए, यह देखें कोई आइटम जोड़ें सेक्शन मीडिया स्टोरेज गाइड देखें.

किसी ऐप्लिकेशन के साथ मीडिया फ़ाइलें शेयर करना

Android FileProvider कॉम्पोनेंट का इस्तेमाल, फ़ाइल सेट अप करने के तरीके में बताए गए तरीके से करें शेयर करने से जुड़ी गाइड.

डायरेक्ट फ़ाइल पाथ का इस्तेमाल करने वाले कोड या लाइब्रेरी से फ़ाइलें ऐक्सेस करें

अपने ऐप्लिकेशन के Android वर्शन के आधार पर लॉजिक शामिल करें.

Android 11 पर चल रहा है

इस तरीके का इस्तेमाल करें:

  1. ऐप्लिकेशन अनुमतियों का अनुरोध करें में बताए गए सबसे सही तरीके अपनाएं. READ_EXTERNAL_STORAGE के लिए अनुरोध करें अनुमति.
  2. डायरेक्ट फ़ाइल पाथ का इस्तेमाल करके, फ़ाइलें ऐक्सेस करें.

ज़्यादा जानकारी के लिए, लिंक का इस्तेमाल करके मीडिया फ़ाइलें खोलने का तरीका बताने वाला सेक्शन देखें डायरेक्ट फ़ाइल पाथ का इस्तेमाल करना चाहिए.

Android 10 पर चल रहा है

अगर आपका ऐप्लिकेशन Android 10 (एपीआई लेवल 29) को टारगेट करता है, तो स्कोप वाले स्कोप से ऑप्ट-आउट करें डिवाइस की मेमोरी और Android 9 के लिए इस तरीके का इस्तेमाल करना जारी रखें और इससे कम का इस्तेमाल करें.

Android 9 या इससे पहले के वर्शन पर चल रहा है

इस तरीके का इस्तेमाल करें:

  1. ऐप्लिकेशन अनुमतियों का अनुरोध करें में बताए गए सबसे सही तरीके अपनाएं. WRITE_EXTERNAL_STORAGE के लिए अनुरोध करें अनुमति.
  2. डायरेक्ट फ़ाइल पाथ का इस्तेमाल करके, फ़ाइलें ऐक्सेस करें.

गैर-मीडिया फ़ाइलों को मैनेज करना

इस सेक्शन में, गैर-मीडिया फ़ाइलों को मैनेज करने के लिए, इस्तेमाल के कुछ सामान्य उदाहरणों के बारे में बताया गया है साथ ही, यह जानकारी भी मिलती है कि आपका ऐप्लिकेशन किस हद तक इस्तेमाल कर सकता है. नीचे दी गई टेबल इनमें से हर इस्तेमाल के उदाहरण की खास जानकारी देता है और हर उस सेक्शन के लिंक देता है अतिरिक्त जानकारी शामिल करें.

इस्तेमाल का उदाहरण खास जानकारी
दस्तावेज़ फ़ाइल खोलना Android के सभी वर्शन के लिए यही तरीका अपनाएं.
फ़ाइलों को इन पर लिखें दूसरे स्टोरेज वॉल्यूम Android 11 के लिए, एक तरीका अपनाएं. पहले की क्वेरी के लिए, कोई दूसरा तरीका अपनाएं Android के वर्शन हैं.
लेगसी वर्शन से, मौजूदा फ़ाइलों को माइग्रेट करना डिवाइस सेव करने की जगह जब भी हो सके, अपनी फ़ाइलों को स्कोप वाले स्टोरेज में माइग्रेट करें. स्कोप वाले पेज से ऑप्ट आउट करना ज़रूरत पड़ने पर Android 10 के लिए स्टोरेज पाएं.
अन्य लोगों के साथ कॉन्टेंट शेयर करना ऐप्लिकेशन Android के सभी वर्शन के लिए यही तरीका अपनाएं.
बिना मीडिया वाली फ़ाइलों को कैश मेमोरी में सेव करना Android के सभी वर्शन के लिए यही तरीका अपनाएं.
किसी डिवाइस पर नॉन-मीडिया फ़ाइलें एक्सपोर्ट करना अगर आपका ऐप्लिकेशन स्कोप वाले स्टोरेज का इस्तेमाल करता है, तो एक तरीका अपनाएं. किसी दूसरी इमेज का इस्तेमाल करें अगर आपका ऐप्लिकेशन, स्कोप वाले स्टोरेज से ऑप्ट आउट करता है, तो यह तरीका अपनाएं.

दस्तावेज़ फ़ाइल खोलें

ACTION_OPEN_DOCUMENT का इस्तेमाल करें यह नीति उपयोगकर्ता से सिस्टम पिकर का इस्तेमाल करके खोलने के लिए, एक फ़ाइल चुनने के लिए कहती है. अगर आपको उन फ़ाइलों के टाइप को फ़िल्टर करना चाहते हैं जिन्हें सिस्टम पिकर, में से चुनना है, तो setType() या EXTRA_MIME_TYPES.

उदाहरण के लिए, सभी PDF, ODT, और TXT फ़ाइलें ढूंढने के लिए, इनका इस्तेमाल करें कोड:

Kotlin

startActivityForResult(
        Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
            addCategory(Intent.CATEGORY_OPENABLE)
            type = "*/*"
            putExtra(Intent.EXTRA_MIME_TYPES, arrayOf(
                    "application/pdf", // .pdf
                    "application/vnd.oasis.opendocument.text", // .odt
                    "text/plain" // .txt
            ))
        },
        REQUEST_CODE
      )

Java

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {
                "application/pdf", // .pdf
                "application/vnd.oasis.opendocument.text", // .odt
                "text/plain" // .txt
        });
        startActivityForResult(intent, REQUEST_CODE);

दूसरे स्टोरेज वॉल्यूम का इस्तेमाल करने वाली फ़ाइलों में लिखने की सुविधा

दूसरे स्टोरेज वॉल्यूम में एसडी कार्ड शामिल होते हैं. यहां दी गई किसी भी जानकारी को ऐक्सेस करने के लिए, इसका इस्तेमाल करके, तय किया गया स्टोरेज StorageVolume क्लास.

अपना ऐप्लिकेशन जिस Android वर्शन पर काम करता है उसके हिसाब से लॉजिक शामिल करें.

यह सुविधा Android 11 पर काम करती है

इस तरीके का इस्तेमाल करें:

  1. स्कोप वाले स्टोरेज मॉडल का इस्तेमाल करें.
  2. Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन को टारगेट करें.
  3. घोषणा करें WRITE_EXTERNAL_STORAGE अनुमति.
  4. इनमें से कोई एक तरीका अपनाएं:
    • MediaStore एपीआई का इस्तेमाल करके, फ़ाइल का ऐक्सेस.
    • एपीआई का इस्तेमाल करके, सीधे फ़ाइल पाथ ऐक्सेस करने की सुविधा File या fopen().

पुराने वर्शन पर चल रहा है

स्टोरेज के ऐक्सेस का इस्तेमाल करें फ़्रेमवर्क, जिसकी मदद से लोग ये काम कर सकते हैं सेकंडरी स्टोरेज वॉल्यूम में वह जगह चुनें जहां आपका ऐप्लिकेशन फ़ाइल से लिए जाते हैं.

लेगसी स्टोरेज लोकेशन से मौजूदा फ़ाइलों को माइग्रेट करने की सुविधा

किसी डायरेक्ट्री को स्टोरेज की लेगसी लोकेशन माना जाता है, अगर वह: ऐप्लिकेशन की खास डायरेक्ट्री या सार्वजनिक तौर पर शेयर की गई डायरेक्ट्री. अगर आपका ऐप्लिकेशन, लेगसी स्टोरेज लोकेशन में फ़ाइलों का इस्तेमाल करता है, तो हमारा सुझाव है कि आप ऐप्लिकेशन की उन जगहों पर फ़ाइलें सेव करना जिन्हें ऐक्सेस करने के लिए, स्कोप वाले स्टोरेज का इस्तेमाल किया जाता है. स्कोप वाले स्टोरेज में मौजूद फ़ाइलों के साथ काम करने के लिए, ऐप्लिकेशन में ज़रूरी बदलाव करना.

डेटा माइग्रेशन के लिए, स्टोरेज की लेगसी जगह का ऐक्सेस बनाए रखना

आपके ऐप्लिकेशन को लेगसी स्टोरेज की जगह का ऐक्सेस बनाए रखना होगा, ताकि ऐप्लिकेशन फ़ाइलों को ऐसी जगहों पर माइग्रेट करें जिन्हें स्कोप वाले स्टोरेज से ऐक्सेस किया जा सकता है. कॉन्टेंट बनाने आपको कौनसा तरीका इस्तेमाल करना चाहिए, यह आपके ऐप्लिकेशन के टारगेट एपीआई लेवल पर निर्भर करता है.

अगर आपका ऐप्लिकेशन Android 11 को टारगेट करता है
  1. सेट करें preserveLegacyExternalStorage लेगसी स्टोरेज को बनाए रखने के लिए, true पर फ़्लैग करें मॉडल ने कि आपका ऐप्लिकेशन उपयोगकर्ता का डेटा माइग्रेट कर सके, जब वह उपयोगकर्ता के डेटा को नए वर्शन में अपग्रेड करे Android 11 को टारगेट करने वाला आपका ऐप्लिकेशन.

  2. स्कोप वाले स्टोरेज से ऑप्ट आउट करना जारी रखें, ताकि तो आपका ऐप्लिकेशन, लेगसी स्टोरेज लोकेशन में आपकी फ़ाइलों को ऐक्सेस करना जारी रख सकता है Android 10 वाले डिवाइस.

अगर आपका ऐप्लिकेशन Android 10 को टारगेट करता है

इन कामों को आसान बनाने के लिए, डिवाइस के स्कोप वाले स्टोरेज से ऑप्ट आउट करें सभी Android वर्शन पर अपने ऐप्लिकेशन के काम करने के तरीके को बनाए रख सकता है.

ऐप्लिकेशन का डेटा माइग्रेट करने की सुविधा

जब आपका ऐप्लिकेशन माइग्रेट करने के लिए तैयार हो, तो यह तरीका अपनाएं:

  1. Android 10 या इससे पहले के वर्शन को टारगेट करें.
  2. दायरे वाले स्टोरेज से ऑप्ट आउट करना आपके ऐप्लिकेशन के पास उन फ़ाइलों का ऐक्सेस है जिन्हें आपको माइग्रेट करना है.
  3. ऐसे कोड को डिप्लॉय करें जो File एपीआई का इस्तेमाल करके, फ़ाइलों को उनके फ़ोल्डर से /sdcard/ से कम की मौजूदा जगह से लेकर ऐक्सेस करने लायक जगह तक डिवाइस के स्कोप वाले स्टोरेज को ये विकल्प मिलते हैं:

    1. किसी भी निजी ऐप्लिकेशन फ़ाइल को उस डायरेक्ट्री में ले जाएं जो getExternalFilesDir() तरीका.
    2. किसी भी शेयर की गई गैर-मीडिया फ़ाइलों को, ऐप्लिकेशन के लिए तय की गई सबडायरेक्ट्री में ले जाएं Downloads/ डायरेक्ट्री.
  4. अपने ऐप्लिकेशन की लेगसी स्टोरेज डायरेक्ट्री को, /sdcard/ डायरेक्ट्री.

जब उपयोगकर्ता आपके ऐप्लिकेशन का नया वर्शन इंस्टॉल करते हैं, तब वे डेटा को पूरा करते हैं माइग्रेशन प्रोसेस पूरी कर ली जाएगी. आप इनकी माइग्रेशन प्रक्रिया की निगरानी कर सकते हैं Analytics इवेंट बनाकर अपने उपयोगकर्ता आधार को बेहतर बनाएं.

उपयोगकर्ताओं का डेटा माइग्रेट कर लेने के बाद, अपने ऐप्लिकेशन पर एक और अपडेट पब्लिश करें. इसमें, टारगेट किया गया है.

अन्य ऐप्लिकेशन के साथ कॉन्टेंट शेयर करना

अपने ऐप्लिकेशन की फ़ाइलें किसी अन्य ऐप्लिकेशन के साथ शेयर करने के लिए, किसी FileProvider. ऐसे ऐप्लिकेशन के लिए जिन्हें शेयर करना ज़रूरी है फ़ाइलों को एक-दूसरे से कनेक्ट करने की कोशिश करते हैं, तो हमारा सुझाव है कि आप कॉन्टेंट ऐक्सेस करने के लिए प्रोवाइडर की मदद से, और फिर संग्रह में ऐप्लिकेशन जोड़ते समय डेटा को सिंक करना.

गैर-मीडिया फ़ाइलों को कैश मेमोरी में सेव करना

आपको जिस तरीके का इस्तेमाल करना चाहिए वह आपकी ज़रूरत की फ़ाइलों के टाइप पर निर्भर करता है पर जाकर उसे कैश मेमोरी में सेव करें.

  • ऐसी छोटी फ़ाइलें या फ़ाइलें जिनमें संवेदनशील जानकारी होती है: Context#getCacheDir().
  • बड़ी फ़ाइलें या ऐसी फ़ाइलें जिनमें संवेदनशील जानकारी मौजूद नहीं है: Context#getExternalCacheDir().

किसी डिवाइस पर गैर-मीडिया फ़ाइलें एक्सपोर्ट करना

गैर-मीडिया कॉन्टेंट को स्टोर करने के लिए, सही डिफ़ॉल्ट जगह तय करें फ़ाइलें शामिल हैं. उपयोगकर्ताओं को यहां से फ़ाइलें एक्सपोर्ट करने की अनुमति दें ऐप्लिकेशन के लिए खास डायरेक्ट्री को आम तौर पर ऐक्सेस की जा सकने वाली जगह पर सेट करना चाहिए. गैर-मीडिया फ़ाइलों को इसमें एक्सपोर्ट करने के लिए, MediaStore के डाउनलोड या दस्तावेज़ के कलेक्शन का इस्तेमाल करें डिवाइस.

डिवाइस के स्कोप वाले स्टोरेज से कुछ समय के लिए ऑप्ट-आउट करना

इससे पहले कि आपका ऐप्लिकेशन, स्कोप वाले स्टोरेज के साथ पूरी तरह काम करे, कुछ समय के लिए ऑप्ट आउट करें आपके टेस्ट और प्रोडक्शन में ऐप का इस्तेमाल करें.

जांचों के लिए ऑप्ट आउट करना

Android 10 (एपीआई लेवल 29) और उसके बाद वाले वर्शन पर, आपके ऐप्लिकेशन के टेस्ट स्टोरेज में चलते हैं डिफ़ॉल्ट रूप से सैंडबॉक्स करता है. यह सैंडबॉक्स आपके ऐप्लिकेशन को, Google के बाहर की फ़ाइलों को ऐक्सेस करने से रोकता है और सार्वजनिक तौर पर शेयर की गई डायरेक्ट्री शामिल होंगी.

अगर टेस्ट में होस्ट के लिए फ़ाइलें—जैसे कि स्क्रीनशॉट, डीबगिंग डेटा, या परफ़ॉर्मेंस मेट्रिक—इन फ़ाइलों को दुनिया भर के डायरेक्ट्री में जा सकते हैं. ऐसा करने के लिए, नीचे दिए गए फ़्लैग को am instrument को शुरू करता है:

-e no-isolated-storage 1

यह फ़्लैग, इंस्ट्रुमेंट किए गए टेस्ट केस के सभी व्यवहार पर असर डालता है और सभी पर असर डालता है शुरू किया गया टेस्ट कोड. इसलिए, इस फ़्लैग का इस्तेमाल करने पर, इस बात की पुष्टि नहीं की जा सकती कि स्कोप वाले स्टोरेज के साथ ऐप्लिकेशन के काम करने की सुविधा. टेस्ट आउटपुट के लिए, बेहतर है कि ऐप्लिकेशन के स्कोप वाले ऐसे स्टोरेज पर लिखें जिसे शेल में पढ़ा जा सके. इसके बाद, उसे ऐप्लिकेशन के स्कोप वाली डायरेक्ट्री. यह तय करने के लिए कि किस डायरेक्ट्री से डेटा लेना है, getExternalMediaDirs().

प्रोडक्शन ऐप्लिकेशन में ऑप्ट-आउट करना

अगर आपका ऐप्लिकेशन, Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन को टारगेट करता है, तो कुछ समय के लिए ऑप्ट इन किया जा सकता है आपके प्रोडक्शन ऐप्लिकेशन के स्कोप वाले स्टोरेज से बाहर है. अगर आपको हालांकि, Android 10 के लिए आपको आपके ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में requestLegacyExternalStorage से true तक:

<manifest ... >
  <!-- This attribute is "false" by default on apps targeting
       Android 10. -->
  <application android:requestLegacyExternalStorage="true" ... >
    ...
  </application>
</manifest>

यह जांच करने के लिए कि Android 10 या उससे पहले के वर्शन को टारगेट करने वाला ऐप्लिकेशन, कब काम करता है स्कोप वाले स्टोरेज का इस्तेमाल करके, इस व्यवहार के लिए ऑप्ट इन किया जा सकता है. इसके लिए, false के लिए requestLegacyExternalStorage. अगर किसी ऐसे डिवाइस पर टेस्ट किया जा रहा है Android 11 पर चलता है, तो ऐप्लिकेशन के साथ काम करने की सुविधा का इस्तेमाल करके फ़्लैग का इस्तेमाल करके डिवाइस के स्कोप वाले स्टोरेज के साथ या इसके बिना, ऐप्लिकेशन के काम करने का तरीका जानने के लिए.

अन्य संसाधन

Android डिवाइस की मेमोरी के बारे में ज़्यादा जानकारी के लिए, नीचे दी गई सामग्री देखें:

ब्लॉग पोस्ट