स्टोरेज डिवाइस पर मौजूद सभी फ़ाइलें मैनेज करना

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

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

सभी फ़ाइलों का ऐक्सेस पाने का अनुरोध करना

कोई ऐप्लिकेशन, उपयोगकर्ता से सभी फ़ाइलों का ऐक्सेस पाने का अनुरोध कर सकता है. इसके लिए, उसे यह तरीका अपनाना होगा:

  1. मेनिफ़ेस्ट में MANAGE_EXTERNAL_STORAGE अनुमति का एलान करें.
  2. उपयोगकर्ताओं को सिस्टम सेटिंग पेज पर ले जाने के लिए, ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION इंटेंट ऐक्शन का इस्तेमाल करें. यहां वे आपके ऐप्लिकेशन के लिए, यह विकल्प चालू कर सकते हैं: सभी फ़ाइलों को मैनेज करने का ऐक्सेस दें.

यह पता करने के लिए कि आपके ऐप्लिकेशन को MANAGE_EXTERNAL_STORAGE अनुमति दी गई है या नहीं, Environment.isExternalStorageManager() को कॉल करें.

ऑपरेशन की अनुमति MANAGE_EXTERNAL_STORAGE ने दी है

MANAGE_EXTERNAL_STORAGE अनुमति से ये काम किए जा सकते हैं:

  • शेयर किए गए स्टोरेज में मौजूद सभी फ़ाइलों को पढ़ने और उनमें बदलाव करने का ऐक्सेस.

  • MediaStore.Files टेबल के कॉन्टेंट का ऐक्सेस.

  • USB on-the-go (OTG) ड्राइव और SD कार्ड, दोनों की रूट डायरेक्ट्री का ऐक्सेस.

  • /Android/data/, /sdcard/Android, और /sdcard/Android की ज़्यादातर सबडायरेक्ट्री को छोड़कर, डिवाइस के स्टोरेज की सभी डायरेक्ट्री में लिखने का ऐक्सेस. इस लिखने के ऐक्सेस में डायरेक्ट फ़ाइल शामिल है पाथ ऐक्सेस कर सकते हैं.

    जिन ऐप्लिकेशन को यह अनुमति दी गई है वे अब भी दूसरे ऐप्लिकेशन की ऐप्लिकेशन के हिसाब से बनाई गई डायरेक्ट्री को ऐक्सेस नहीं कर सकते, क्योंकि ये डायरेक्ट्री स्टोरेज वॉल्यूम पर Android/data/ की सबडायरेक्ट्री के तौर पर दिखती हैं.

जब किसी ऐप्लिकेशन के पास MANAGE_EXTERNAL_STORAGE की अनुमति होती है, तब वह इन्हें ऐक्सेस कर सकता है या तो फ़ाइल या डायरेक्ट्री का इस्तेमाल करके MediaStore API या डायरेक्ट फ़ाइल पाथ. हालांकि, स्टोरेज ऐक्सेस फ़्रेमवर्क का इस्तेमाल करने पर, किसी फ़ाइल या डायरेक्ट्री को सिर्फ़ तब ऐक्सेस किया जा सकता है, जब आपके पास MANAGE_EXTERNAL_STORAGE अनुमति के बिना ऐसा करने का विकल्प हो.

किसी अन्य ऐप्लिकेशन की स्टोरेज मैनेज करने से जुड़ी गतिविधि शुरू करना

Android 12 (एपीआई लेवल 31) और उसके बाद वाले वर्शन पर, वे ऐप्लिकेशन जिनमें MANAGE_EXTERNAL_STORAGE अनुमति और QUERY_ALL_PACKAGES अनुमति—जैसे फ़ाइल प्रबंधन ऐप्लिकेशन— getManageSpaceActivityIntent() उपयोगकर्ताओं को किसी अन्य ऐप्लिकेशन के कस्टम स्पेस प्रबंधन पर भेजने के लिए गतिविधि में सेव किया गया था.

getManageSpaceActivityIntent() तरीका, पैकेज का नाम लेता है और कोड का अनुरोध करता है और यह इनमें से कोई एक नतीजे दिखाता है:

  • PendingIntent, अगर पैकेज के बताए गए नाम वाले ऐप्लिकेशन में, "स्पेस मैनेज करें" गतिविधि को पसंद के मुताबिक बनाया गया है. फ़ाइल ऐसा मैनेजमेंट ऐप्लिकेशन जो getManageSpaceActivityIntent() तरीके का इस्तेमाल करता है उपयोगकर्ताओं को कस्टम गतिविधि पर भेजने के लिए, लौटाए गए इंटेंट को शुरू करें.
  • null, अगर बताए गए पैकेज नाम वाला ऐप्लिकेशन, "मैनेज करें स्पेस" गतिविधि.

जांच के लिए MANAGE_EXTERNAL_STORAGE चालू करना

यह जानने के लिए कि MANAGE_EXTERNAL_STORAGE अनुमति आपके ऐप्लिकेशन पर कैसे असर डालती है, आपके पास जांच के लिए अनुमति चालू करने का विकल्प है. ऐसा करने के लिए, टेस्ट डिवाइस से कनेक्ट की गई मशीन पर यह कमांड चलाएं:

adb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow

Google Play की सूचना

इस सेक्शन में, Google Play पर ऐप्लिकेशन पब्लिश करने वाले डेवलपर के लिए सूचना दी गई है.

शेयर किए गए मेमोरी के व्यापक ऐक्सेस को सीमित करने के लिए, Google Play Store ने नीति Android 11 (एपीआई लेवल 30) या उसके बाद के वर्शन को टारगेट करने वाले और अनुरोध करने वाले ऐप्लिकेशन का आकलन करने के लिए MANAGE_EXTERNAL_STORAGE की अनुमति से सभी फ़ाइलों का ऐक्सेस पाएं. यह नीति मई 2021 से लागू है.

जब आपका ऐप्लिकेशन Android 11 या उसके बाद के वर्शन को टारगेट करता है और उसमें MANAGE_EXTERNAL_STORAGE अनुमति का एलान किया जाता है, तो Android Studio, लिंट चेतावनी दिखाता है. यह चेतावनी, पहले चित्र में दिखाई गई है. यह चेतावनी आपको याद दिलाती है कि Google Play Store में इस नीति के तहत, अनुमति के इस्तेमाल को सीमित किया जाता है.

पहली इमेज. Android Studio में लिंट की चेतावनी जो डेवलपर को याद दिलाती है कि MANAGE_EXTERNAL_STORAGE के बारे में Google Play की नीति अनुमति.

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

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