Android'de content:// URI ile dosya nasıl açılır ve bulunur

Kerem Aydın·8 Temmuz 2026·⏱4 dk

Content:// URI, doğrudan dosya yolu yerine content://com.android... biçimindeki güvenli bir bağlantıdır. Böyle bir dosyayı cihazda açmak için content-URI ile çalışabilen bir uygulama kullanın (görüntüleyici, "Paylaş" → Kaydet). Gerçek yolu öğrenmek için ContentResolver üzerinden veya ADB (content query) kullanarak meta verileri sorgulayın, ardından gerekirse indirmek için adb pull komutunu kullanın.

Bilinmeyen SMS'lerden veya şüpheli sohbetlerden gelen content:// bağlantılarını asla açmayın; bunlar kimlik avı saldırısının parçası olabilir veya kötü amaçlı uygulamalara yönlendirebilir.

content:// URI nedir ve neden gereklidir

Android, doğrudan yolları (/storage/...) gizler ve bunun yerine content:// URI sunar (örneğin content://com.android.providers.media.documents/document/image%3A123). Bu işlem, içerik sağlayıcıları (ContentProvider / FileProvider) aracılığıyla şu amaçlarla yapılır:

  • dosya sisteminin iç yapısını ifşa etmemek;
  • uygulamalar arasında hak kontrolüyle geçici erişim sağlamak;
  • uygulamanın özel dosyalarına doğrudan erişimi engellemek.

FileProvider, bir dosyayı content:// bağlantısına dönüştüren ve gerekli erişim bayraklarıyla (FLAG_GRANT_READ_URI_PERMISSION) Intent aracılığıyla başka bir uygulamaya ileten standart bir bileşendir.

content:// bağlantısı nasıl açılır — kullanıcılar için hızlı adımlar

  1. URI'yi mesajdan/günlükten/uygulamadan kopyalayın.
  2. URI ile çalışabilen bir uygulama açın: dosya yöneticisi, galeri veya yerel şemaları destekleyen herhangi bir tarayıcı. URI'yi adres çubuğuna yapıştırın veya "Paylaş" → uygun uygulamayı kullanın.
  3. Açma işlemi kaydetme amacıyla gerekiyorsa, uygulamada "Kaydet" veya "Paylaş" → "İndirmelere Kaydet" seçeneğini belirleyin.
  4. Açılamıyorsa: uygulama izinlerini (Dosyalar ve medya) kontrol edin ve URI kaynağının gerçekten geçici okuma izni verdiğinden emin olun.

Geliştirici haklarına sahip bir cihazda: ADB terminalini açın ve aşağıdaki adımları uygulayın (yolu almak için aşağıdaki bölüme bakın).

Geliştiriciler için: ContentResolver.openInputStream(uri), InputStream döndürür; gerçek yolu hesaplamaya çalışmadan dosyayı okumak için kullanışlıdır.

Dosyanın gerçek yolunu bulma (birkaç çalışan yöntem)

  1. Dosya yöneticisi uygulaması aracılığıyla (root olmadan)
  • Sağlayıcılarla çalışmayı destekleyen gelişmiş bir yönetici yükleyin. URI'deki son / işaretinden sonraki id kısmını girin. Bazen dosyayı DCIM, Download veya Android/data/ klasörlerinde bulabilirsiniz.
  1. ADB aracılığıyla (en doğru yöntem)
  • Sağlayıcı meta verilerini alın: adb shell content query --uri "content://com.android.providers.media.documents/document/image%3A123" Çıktıda _display_name ve _data alanlarını arayın; _data, dosya sistemindeki gerçek yolu içerebilir.
  • _data mevcutsa, dosyayı indirin: adb pull /storage/emulated/0/Path/To/File.jpg
  1. Programatik olarak (kendi uygulamanızda)
  • Kotlin örneği: val input = contentResolver.openInputStream(uri) // akışı doğrudan oku Veya imleç üzerinden yolu alın: val cursor = contentResolver.query(uri, arrayOf("_data", "_display_name"), null, null, null) cursor?.use { if (it.moveToFirst()) { val idx = it.getColumnIndex("_data") val path = if (idx != -1) it.getString(idx) else null } }
  1. URI başka bir uygulamadan geliyorsa ve yol erişilemiyorsa
  • Kaynak uygulamadan dosyayı "Paylaş" yoluyla göndermesini veya dışa aktarmasını isteyin; geçici URI'lar genellikle birkaç dakika yaşar ve yalnızca doğrudan aktarım için geçerlidir.

Popüler sağlayıcılar ve dosyanın nerede aranacağı

Popüler content:// sağlayıcıları ve tipik depolama konumları

SağlayıcıDosya türüNerede aranır
com.android.providers.media.documentsFotoğraf/videoDCIM/Camera, Pictures, Movies
com.android.externalstorage.documentsHer türlü dosya/storage/emulated/0/Download, Documents
com.android.providers.contactsKişilerKişiler uygulaması üzerinden .vcf olarak dışa aktar
com.google.android.apps.photos.contentGoogle Fotoğraflar önbelleği/bulutAndroid/data/com.google.android.apps.photos/cache

Sık karşılaşılan hatalar

  • "Erişim reddedildi" — Scoped Storage ve izinleri kontrol edin; Android 11'den itibaren harici belleğe erişim kısıtlıdır.
  • Yanlış beklentiler: content:// mutlaka gerçek bir _data içermek zorunda değildir; bazı sağlayıcılar verileri yalnızca veritabanında/bulutta saklar.
  • URI süresi doldu — geçici izinlerin sınırlı bir süresi vardır (dakikalar). Yeniden oluşturun.
  • iOS'ta content:// açmaya çalışmak — şema desteklenmez.

SSS

  • adb pull ile doğrudan content:// kullanılabilir mi?
    Hayır: adb pull dosya yollarıyla çalışır. Önce adb shell content query veya programatik olarak yolu alın, ardından adb pull kullanın.

  • _data boşsa ne yapılmalı?
    Verileri ContentResolver.openInputStream(uri) üzerinden okuyun veya kaynaktan dosyanın dışa aktarılmasını isteyin.

  • content:// bağlantısını paylaşmak güvenli midir?
    Evet, FileProvider kullanılıyorsa ve gerekli izin bayrakları aktarılıyorsa; erişim kontrollü ve geçici olacaktır.

Belirli bir uygulamadan gelen somut bir content:// URI'niz varsa; sağlayıcıyı (com.xxx...) ve örnek URI'yi belirtin, böylece dosyayı almak için kesin komut verebiliriz.