MediaStore API: यह क्या है, क्षमताएँ और साझा मीडिया फ़ाइलों के साथ कार्य

लेखक: IT Sectr प्रकाशित: 2026-07-10 पढ़ने का समय: 7 मिनट

MediaStore API डिवाइस की साझा मीडिया फ़ाइलों: इमेज, वीडियो, ऑडियो और दस्तावेज़ों तक पहुँचने के लिए Android का इंटरफ़ेस है। प्रत्यक्ष फ़ाइल पहुँच के विपरीत, MediaStore एक केंद्रीकृत मीडिया डेटाबेस और कंटेंट प्रोवाइडर के माध्यम से काम करता है। Android Developers Documentation (2025) के अनुसार, Android 10 से शुरू होकर यह API पुराने READ_EXTERNAL_STORAGE के बजाय मीडिया के साथ काम करने का मुख्य तंत्र बन गया। डेवलपर MediaStore का उपयोग गैलरी, म्यूज़िक प्लेयर, कैमरा और फ़ाइल मैनेजर में करते हैं।

मुख्य बातें

  • MediaStore डिवाइस की साझा मीडिया फ़ाइलों तक पहुँचने के लिए Android का सिस्टम कंटेंट प्रोवाइडर है।
  • मीडिया डेटाबेस केंद्रीय रूप से डिवाइस पर सभी इमेज, वीडियो और ऑडियो को इंडेक्स करता है।
  • Android 10 ने MediaStore को साझा मीडिया फ़ाइलों तक पहुँचने का एकमात्र तरीका बना दिया।
  • URI लिंक प्रत्यक्ष फ़ाइल पथों को बदल देते हैं, सुरक्षित पहुँच सुनिश्चित करते हैं।
  • अनुमतियाँ मीडिया प्रकारों के अनुसार माँगी जाती हैं: READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO।

MediaStore API क्या है?

MediaStore API Android प्लेटफ़ॉर्म पर एक सिस्टम कंटेंट प्रोवाइडर है जो डिवाइस की मीडिया फ़ाइलों को इंडेक्स करने, संग्रहीत करने और उन तक पहुँच प्रदान करने के लिए डिज़ाइन किया गया है। यह API Android SDK का हिस्सा है और API Level 1 से उपलब्ध है।

MediaStore एक एकीकृत मीडिया डेटाबेस के माध्यम से काम करता है जो स्वचालित रूप से डिवाइस को स्कैन करता है और सभी मीडिया फ़ाइलों का मेटाडेटा एकत्र करता है। डेटाबेस सिस्टम द्वारा अपडेट किया जाता है जब फ़ाइलें जोड़ी, संशोधित या हटाई जाती हैं, इसलिए एप्लिकेशन को हमेशा मैनुअल स्कैनिंग के बिना नवीनतम जानकारी मिलती है।

MediaStore की मुख्य तालिकाएँ हैं: Images (इमेज), Video (वीडियो), Audio (ऑडियो) और Files (सामान्य फ़ाइलें)। प्रत्येक तालिका में मेटाडेटा वाले कॉलम होते हैं: नाम, निर्माण तिथि, आकार, MIME प्रकार, GPS निर्देशांक और अन्य गुण।

Android संस्करणों में MediaStore का विकास

Android 10 से पहले, डेवलपर सभी डिवाइस फ़ाइलों तक पहुँचने के लिए READ_EXTERNAL_STORAGE का उपयोग करते थे। Android 10 (API 29) ने Scoped Storage पेश किया: एप्लिकेशन केवल अपनी फ़ाइलों और MediaStore के माध्यम से ही पहुँच प्राप्त कर सकते थे। Android 11 ने नीति को और सख्त कर दिया, साझा निर्देशिकाओं के प्रत्यक्ष पथ को पूरी तरह से अवरुद्ध कर दिया।

Android 13 (API 33) से शुरू होकर, Google ने READ_EXTERNAL_STORAGE को विस्तृत अनुमतियों से बदल दिया: READ_MEDIA_IMAGES, READ_MEDIA_VIDEO और READ_MEDIA_AUDIO। यह उपयोगकर्ताओं को पूरे स्टोरेज को उजागर किए बिना केवल विशिष्ट मीडिया प्रकारों तक पहुँच प्रदान करने की अनुमति देता है।

MediaStore कैसे काम करता है: आर्किटेक्चर और मीडिया डेटाबेस

MediaStore कंटेंट प्रोवाइडर आर्किटेक्चर पर बनाया गया है: प्रत्येक एप्लिकेशन ContentResolver और Uri के माध्यम से इसे एक्सेस करता है। सिस्टम मीडिया स्कैनर — MediaScannerConnection — बूट, USB कनेक्शन या रिबूट के दौरान डिवाइस पर सभी फ़ाइलों को स्वचालित रूप से इंडेक्स करता है।

मीडिया डेटाबेस सिस्टम डेटाबेस में संग्रहीत होता है और प्रत्येक मीडिया फ़ाइल के लिए रिकॉर्ड रखता है। कॉलम प्रकार के अनुसार भिन्न होते हैं: इमेज में ORIENTATION और DATE_TAKEN होता है, वीडियो में DURATION होता है, ऑडियो फ़ाइलों में ARTIST और ALBUM होता है। डेवलपर फ़िल्टर करने के लिए projection और selection के साथ query के माध्यम से SQL-जैसे क्वेरी चला सकते हैं।

kotlin
val projection = arrayOf(
    MediaStore.Images.Media._ID,
    MediaStore.Images.Media.DISPLAY_NAME,
    MediaStore.Images.Media.DATE_ADDED
)

val cursor = contentResolver.query(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    projection,
    null,
    null,
    MediaStore.Images.Media.DATE_ADDED + " DESC"
)

cursor?.use {
    while (moveToNext()) {
        val name = getString(getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME))
    }
}

Content URI और उनका अर्थ

प्रत्येक मीडिया फ़ाइल की पहचान Content URI से होती है जैसे content://media/external/images/media/1234। बाहरी URI साझा स्टोरेज को इंगित करता है, जबकि आंतरिक URI सिस्टम मीडिया फ़ाइलों को इंगित करता है। फ़ाइल पथों के बजाय URI का उपयोग MediaStore का प्रमुख लाभ है: एप्लिकेशन को फ़ाइल सिस्टम तक पहुँच की आवश्यकता नहीं होती और यह सुरक्षित कंटेंट प्रोवाइडर के माध्यम से काम करता है।

MediaStore में मीडिया फ़ाइलों के प्रकार

MediaStore चार मुख्य मीडिया प्रकारों का समर्थन करता है, प्रत्येक की अपनी तालिका और मेटाडेटा सेट होता है। डेवलपर अपने एप्लिकेशन के कंटेंट प्रकार के अनुसार उपयुक्त तालिका चुनते हैं।

  • MediaStore.Images — फ़ोटो, स्क्रीनशॉट और चित्र। कॉलम: BUCKET_DISPLAY_NAME, IS_PRIVATE, LATITUDE, LONGITUDE।
  • MediaStore.Video — वीडियो रिकॉर्डिंग और फ़िल्में। कॉलम: DURATION, RESOLUTION, IS_DRM।
  • MediaStore.Audio — संगीत ट्रैक और ध्वनि फ़ाइलें। कॉलम: ARTIST, ALBUM, COMPOSER, TRACK।
  • MediaStore.Files — दस्तावेज़ और अन्य फ़ाइलें। Android 10 से साझा पहुँच के लिए उपलब्ध।

मानक कॉलम के अलावा, प्रत्येक तालिका में सिस्टम फ़ील्ड होते हैं: _ID, DATA (पुराना), SIZE, MIME_TYPE, DATE_ADDED, DATE_MODIFIED। Android 10 से, DATA फ़ील्ड को पुराना चिह्नित किया गया है, और डेवलपर को URI के माध्यम से InputStream खोलकर काम करना चाहिए।

MediaStore के साथ काम करने के लिए अनुमतियाँ

MediaStore के लिए स्पष्ट अनुमतियाँ आवश्यक हैं, जो Android संस्करण के अनुसार भिन्न होती हैं। Android 13 से पहले, एकल READ_EXTERNAL_STORAGE अनुमति का उपयोग किया जाता था। Android 13 (API 33) से शुरू होकर, Google ने प्रत्येक मीडिया प्रकार के लिए विस्तृत अनुमतियाँ पेश कीं।

मीडिया प्रकारअनुमति (API 33+)पुरानी (API 29–32)
इमेजREAD_MEDIA_IMAGESREAD_EXTERNAL_STORAGE
वीडियोREAD_MEDIA_VIDEOREAD_EXTERNAL_STORAGE
ऑडियोREAD_MEDIA_AUDIOREAD_EXTERNAL_STORAGE
लिखनाWRITE_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE

MediaStore में लिखने के लिए Android 9 और उससे नीचे WRITE_EXTERNAL_STORAGE की भी आवश्यकता होती है। Android 10 से शुरू होकर, एप्लिकेशन बिना अतिरिक्त अनुमतियों के MediaStore में अपनी फ़ाइलें लिख सकता है — ContentResolver.insert के माध्यम से रिकॉर्ड डालने पर सिस्टम स्वचालित रूप से पहुँच प्रदान करता है।

रनटाइम पर अनुमतियाँ माँगना

MediaStore अनुमतियाँ मानक ActivityResultContracts.RequestMultiplePermissions तंत्र के माध्यम से माँगी जाती हैं। उपयोगकर्ता अनुरोध को अस्वीकार कर सकता है, और एप्लिकेशन को इस परिदृश्य को सही ढंग से संभालना चाहिए। MediaStore तक प्रत्येक पहुँच से पहले ContextCompat.checkSelfPermission के माध्यम से अनुमति की जाँच करने की अनुशंसा की जाती है।

कोड उदाहरण: MediaStore के माध्यम से पढ़ना और लिखना

MediaStore न केवल पढ़ने बल्कि मीडिया फ़ाइलें लिखने की भी अनुमति देता है। इमेज या वीडियो लिखने के लिए, डेवलपर ContentResolver.insert का उपयोग करता है और लौटाए गए URI के लिए OutputStream खोलता है। सिस्टम स्वचालित रूप से फ़ाइल को मीडिया डेटाबेस में जोड़ता है और इंडेक्स करता है।

kotlin
val values = ContentValues().apply {
    put(MediaStore.Images.Media.DISPLAY_NAME, "photo_2025.jpg")
    put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
    put(MediaStore.Images.Media.RELATIVE_PATH, "Pictures/MyApp")
}

val uri = contentResolver?.insert(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values
)

uri?.let {
    val outputStream = contentResolver?.openOutputStream(it)
    outputStream?.use { stream ->
        // स्ट्रीम में बाइट लिखें
    }
}

MediaStore के माध्यम से मीडिया फ़ाइलें हटाना

हटाना फ़ाइल के URI के साथ ContentResolver.delete के माध्यम से किया जाता है। सिस्टम पहुँच अधिकारों की जाँच करता है: यदि फ़ाइल वर्तमान एप्लिकेशन की है, तो हटाना बिना अतिरिक्त अनुमतियों के होता है। Android 10+ पर अन्य एप्लिकेशन की फ़ाइलों के लिए, सिस्टम डायलॉग के माध्यम से उपयोगकर्ता की पुष्टि आवश्यक है।

MediaStore बनाम प्रत्यक्ष फ़ाइल पहुँच

MediaStore API File API के माध्यम से प्रत्यक्ष फ़ाइल पहुँच से मौलिक रूप से भिन्न है। फ़ाइल पथों के बजाय Content URI का उपयोग किया जाता है, और फ़ाइल संचालन के बजाय ContentResolver विधियों का उपयोग किया जाता है। यह तीन प्रमुख लाभ प्रदान करता है: सुरक्षा, स्वचालित इंडेक्सिंग और एकीकृत इंटरफ़ेस।

प्रत्यक्ष फ़ाइल पहुँच Android 10+ पर साझा निर्देशिकाओं के लिए प्रतिबंधित है। MediaStore Pictures, DCIM, Movies, Music और Download से मीडिया पढ़ने का एकमात्र तरीका बना हुआ है। एप्लिकेशन-विशिष्ट फ़ाइलों (app-specific storage) के लिए, प्रत्यक्ष पहुँच संरक्षित है — ये Android/data और Android/media में फ़ोल्डर हैं।

MediaStore और प्रत्यक्ष पहुँच के बीच चुनाव कंटेंट प्रकार पर निर्भर करता है। MediaStore साझा मीडिया फ़ाइलों के लिए अनिवार्य है जो अन्य एप्लिकेशन के लिए सुलभ हैं। प्रत्यक्ष File API एप्लिकेशन की आंतरिक फ़ाइलों और कैश के लिए उपयुक्त है। Storage Access Framework का उपयोग सिस्टम पिकर के माध्यम से मनमाने दस्तावेज़ चुनने के लिए किया जाता है।

अक्सर पूछे जाने वाले प्रश्न

Android में MediaStore API क्या है?

MediaStore API डिवाइस की मीडिया फ़ाइलों: इमेज, वीडियो, ऑडियो और दस्तावेज़ों तक पहुँचने के लिए Android का सिस्टम कंटेंट प्रोवाइडर है। API ContentResolver और मीडिया डेटाबेस के माध्यम से एक एकीकृत इंटरफ़ेस प्रदान करता है जो स्वचालित रूप से सभी फ़ाइलों को इंडेक्स करता है।

MediaStore किन मीडिया प्रकारों का समर्थन करता है?

MediaStore Images (इमेज), Video (वीडियो), Audio (ऑडियो) और Files (दस्तावेज़) का समर्थन करता है। प्रत्येक प्रकार की अपनी तालिका और मेटाडेटा सेट होता है: इमेज में ORIENTATION, वीडियो में DURATION, ऑडियो फ़ाइलों में ARTIST होता है।

Android 13 पर MediaStore के लिए किन अनुमतियों की आवश्यकता है?

Android 13+ पर विस्तृत अनुमतियाँ उपयोग की जाती हैं: इमेज के लिए READ_MEDIA_IMAGES, वीडियो के लिए READ_MEDIA_VIDEO और ऑडियो के लिए READ_MEDIA_AUDIO। उपयोगकर्ता केवल विशिष्ट मीडिया प्रकारों तक पहुँच प्रदान कर सकता है।

MediaStore के माध्यम से फ़ाइल कैसे लिखूँ?

लिखने के लिए, नाम और MIME प्रकार के साथ ContentValues बनाएँ, URI प्राप्त करने के लिए ContentResolver.insert कॉल करें, फिर ContentResolver.openOutputStream के माध्यम से OutputStream खोलें। सिस्टम स्वचालित रूप से नई फ़ाइल को इंडेक्स करता है।

MediaStore Storage Access Framework से कैसे भिन्न है?

MediaStore मीडिया डेटाबेस के माध्यम से डिवाइस की सभी मीडिया फ़ाइलों तक प्रोग्रामेटिक पहुँच प्रदान करता है। Storage Access Framework सिस्टम फ़ाइल चयन डायलॉग खोलता है और URI लौटाता है — उपयोगकर्ता एक विशिष्ट फ़ाइल या फ़ोल्डर चुनता है।

सारांश

  • MediaStore API Android मीडिया फ़ाइलों तक पहुँचने का प्राथमिक तंत्र है, जो कंटेंट प्रोवाइडर और मीडिया डेटाबेस के माध्यम से काम करता है।
  • मीडिया डेटाबेस स्वचालित रूप से इमेज, वीडियो, ऑडियो और दस्तावेज़ों को इंडेक्स करता है, ContentResolver के माध्यम से मेटाडेटा तक पहुँच प्रदान करता है।
  • Android 10 ने MediaStore को साझा मीडिया फ़ाइलों तक पहुँचने का एकमात्र तरीका बनाया, प्रत्यक्ष फ़ाइल पहुँच को प्रतिबंधित किया।
  • Android 13 ने एकल READ_EXTERNAL_STORAGE के बजाय विस्तृत अनुमतियाँ READ_MEDIA_IMAGES, READ_MEDIA_VIDEO और READ_MEDIA_AUDIO पेश कीं।
  • Content URI फ़ाइल पथों को बदलता है, अन्य एप्लिकेशन की फ़ाइलों तक रूट अनुमतियों के बिना सुरक्षित पहुँच सुनिश्चित करता है।
  • MediaStore के माध्यम से लिखना ContentResolver.insert और openOutputStream के माध्यम से मीडिया डेटाबेस में स्वचालित इंडेक्सिंग के साथ किया जाता है।
  • चुनाव MediaStore और SAF के बीच कार्य पर निर्भर करता है: MediaStore बैच मीडिया संचालन के लिए, SAF उपयोगकर्ता द्वारा व्यक्तिगत फ़ाइलें चुनने के लिए।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें