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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں