Android 11'de Scoped Storage Nasıl Çalışır ve "İndirilenler"de Dosyalar Nerede Bulunur?

Kerem Aydın·6 Temmuz 2026·⏱3 dk

Özetle: Android 11, Scoped Storage özelliğini getirdi — uygulamalar artık kendi uygulama özelindeki klasörleri ve genel koleksiyonları API aracılığıyla görür. "İndirilenler" klasörü fiziksel olarak mevcuttur (genellikle /storage/emulated/0/Download), ancak içeriğine erişim MediaStore.Downloads veya Storage Access Framework (SAF) aracılığıyla sağlanmalıdır; tam yetki yalnızca MANAGE_EXTERNAL_STORAGE izniyle ve sadece sıkı gerekçelendirilmiş durumlarda mümkündür.

Android 11'de Ne Değişti ve Neden Önemli?

Scoped Storage, genel depolamaya rastgele erişimi kısıtlar. Bu, gizliliği artırır: uygulama başka dosyaları yoldan okuyamaz. Geliştiriciler için bu şu anlama gelir:

  • Fotoğraf/video/ses için MediaStore kullanın.
  • Rastgele dosyalar için ya MediaStore.Downloads ya da SAF (ACTION_OPEN_DOCUMENT / ACTION_OPEN_DOCUMENT_TREE) kullanın.
  • MANAGE_EXTERNAL_STORAGE son çaredir, kullanıcının manuel olarak etkinleştirmesini gerektirir ve mağazada yayınlarken gerekçelendirme ister.

Eğer kullanıcıysanız ve dosyayı "İndirilenler"de göremiyorsanız, önce yerleşik "Dosyalar" uygulamasını → "İndirilenler" bölümünü açın veya MTP modunda bilgisayara bağlanın — burada klasör doğrudan görünür.

Geliştiriciler İçin İndirilenlere Erişimin Pratik Yolları

  1. MediaStore — medya içeriği ve Download içindeki birçok dosya durumu için:
  • ContentResolver ve Uris aracılığıyla okuma/yazma.
  • Downloads dizinine yazmak için RELATIVE_PATH desteği sunar.

Downloads'a yazma örneği (Kotlin):

val values = ContentValues().apply {
  put(MediaStore.MediaColumns.DISPLAY_NAME, "report.pdf")
  put(MediaStore.MediaColumns.MIME_TYPE, "application/pdf")
  put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS)
}
val uri = contentResolver.insert(MediaStore.Downloads.getContentUri("external"), values)
uri?.let { contentResolver.openOutputStream(it)?.use { out -> /* write bytes */ } }
  1. Storage Access Framework (SAF) — kullanıcının dosya/klasör seçmesi veya kalıcı erişim gerekiyorsa:
  • ACTION_OPEN_DOCUMENT — dosya seçmek için.
  • ACTION_OPEN_DOCUMENT_TREE — klasör seçmek ve kalıcı URI izni almak için.

Intent örneği:

val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
  addCategory(Intent.CATEGORY_OPENABLE)
  type = "*/*"
}
startActivityForResult(intent, REQUEST_CODE_OPEN)
  1. MANAGE_EXTERNAL_STORAGE — tam yetki, yalnızca zorunlu durumlarda:
  • Kullanıcı ayarlardan "Tüm dosyalara erişim"i manuel olarak etkinleştirir.
  • Ciddi bir iş mantığı ve uygulama yayınlarken beyan gerekir.

Gizli geçiş yöntemlerini ve resmi olmayan API'leri kullanmayın — bu güvenilir değildir, mağaza kurallarını ihlal edebilir ve farklı cihazlarda bozulabilir.

Normal Bir Kullanıcı Olarak İndirilenleri Nerede Bulabilirsiniz?

  • "Dosyalar" uygulamasını → "İndirilenler"i açın (veya ayrı bir "İndirilenler" uygulaması kullanın).
  • Telefonu dosya aktarım modunda (MTP) bilgisayara bağlayın — Download klasörünü göreceksiniz.
  • İndirme bir uygulama içinde (tarayıcı, e-posta) yapıldıysa, uygulamanın dahili klasörünü kontrol edin — tüm indiriciler dosyayı genel Download içine koymaz.

Dosya indirilmiş gibi görünüyor ama görünmüyorsa — "Dosyalar" uygulamasının önbelleğini temizleyin veya cihazı yeniden başlatın; bazen sistem dosyaları gecikmeli indeksler.

Sık Yapılan Hatalar

  • File API aracılığıyla /storage/emulated/0/Download okumaya çalışmak — başka dosyalar için çalışmaz. Çözüm: MediaStore veya SAF.
  • /Android/data'nın erişilebilir olmasını beklemek — bu klasörlere erişim tasarımsal olarak kısıtlıdır.
  • MANAGE_EXTERNAL_STORAGE yanlış kullanımı — gerekçe olmadan uygulama mağazada reddedilebilir.

SSS

  • Eski kodu Scoped Storage'a migrate etmek gerekiyor mu? Evet — doğrudan File yolları kullanıyorsanız, Android 11+ üzerinde düzgün çalışması için MediaStore/SAF'e geçiş zorunludur.
  • Kullanıcı müdahalesi olmadan Downloads'tan başka dosyalar okunabilir mi? Genellikle hayır; MediaStore kullanın veya kullanıcıdan SAF aracılığıyla dosya seçmesini isteyin.
  • Davranışı nasıl test edersiniz? Gerçek cihazlarda ve farklı OS derlemelerinde kontrol edin: üreticiler MTP ve izinlerin uygulanmasında farklılık gösterebilir.

Geliştirici Kontrol Listesi

  • Medya içeriği için MediaStore kullanın.
  • Belgeler ve kullanıcı seçimi için — persistable izinlerle SAF.
  • MANAGE_EXTERNAL_STORAGE — yalnızca gerektiğinde, kullanıcı talimatları ve mağaza beyanı ile.
  • Farklı cihazlarda test edin ve erişim hatalarını zarifçe yönetin.

Kısaca: Android 11 depolamayı daha gizli hale getiriyor — uygulamanızı MediaStore ve SAF'e adapte edin ve kullanıcılara "Tüm dosyalara erişim"in ne zaman ve neden gerekli olduğunu açıklayın.