Chrome neden com.android.chrome.fileprovider üzerinden dosya erişimi istiyor ve bunu nasıl yapılandırmalı
com.android.chrome.fileprovider, Android FileProvider uygulamasıdır: Chrome, paylaşılan dosyalar için güvenli content:// URI'ları oluşturur; bu nedenle dosya indirirken, açarken veya belgeleri gönderirken sistem okuma/yazma izinleri isteyebilir. Aşağıda nedenlere kısa bir bakış ve erişimi güvenle yapılandırmak için kesin adımlar yer almaktadır.
FileProvider nedir ve Chrome neden onu kullanır
FileProvider, uygulamaların gerçek disk yollarını ifşa etmeden geçici content:// URI'ları aracılığıyla dosya paylaşmasına olanak tanıyan bir platform/AndroidX bileşenidir. Chrome bunu şu durumlarda kullanır:
- dosyaları (PDF, görseller, APK) depolama alanına indirirken;
- bir dosyayı harici bir uygulamada açarken (örneğin, üçüncü taraf bir okuyucuda PDF);
- "Paylaş" özelliği aracılığıyla dosyaları başka bir uygulamaya aktarırken.
Avantajı: /storage/... erişimi yerine, yalnızca bu URI için haklara sahip ayrı bir uygulamaya verilebilen geçici bir URI oluşturulur.
Sistem izin isteğini görmezden gelmek, indirmeleri veya dosya açmayı engelleyebilir — Chrome dosyayı kaydedemez veya başka bir uygulamaya aktaramaz.
İstek neden görünür ve ne anlama gelir
İstekler üç faktörden kaynaklanır:
- Depolama erişim izinleri. Eski Android sürümlerinde bu "Depolama", yeni sürümlerde ise "Dosyalar ve medya" veya ayrı bir "Tüm dosyalara erişim" (Manage external storage) iznidir.
- Kapsamlı Depolama (Scoped Storage) (Android 10–13 ve üzeri): Başkalarının dosyalarına doğrudan erişim kısıtlıdır, bu nedenle Chrome FileProvider ve/veya Storage Access Framework (SAF) kullanır ve bu durum izin iletişim kutusunu tetikler.
- Harici uygulamalarla işlemler: URI'yi başka bir uygulamaya aktarmak, geçici erişim verilmesini gerektirir.
Chrome veya sistem güncellemesinden sonra istekler sıklaşırsa, bu normaldir: Manifest'in yeniden derlenmesi/yol değişiklikleri tekrarlanan onayları tetikleyebilir.
Erişimi doğru şekilde nasıl yapılandırılır (adım adım)
- Temel erişimi izin ver
- Ayarlar → Uygulamalar → Chrome → İzinler → Dosyalar ve medya (veya "Depolama").
- Sürekli tam erişim vermek istemiyorsanız "Yalnızca uygulama kullanılırken izin ver" seçeneğini belirleyin.
- Chrome'daki indirme klasörünü kontrol et
- Chrome → Ayarlar → İndirilenler → "Nereye kaydedileceğini sor" seçeneğini etkinleştirin veya genel Downloads klasörünü belirtin. Bu, /Android/data gibi özel dizinlere yapılan başvuruları azaltır.
- Tam erişim gerekirse (sadece Android 11+ için)
- Ayarlar → Gizlilik (veya Uygulamalar → Özel erişim) → Tüm dosyalara erişim → Yalnızca gerekiyorsa Chrome için etkinleştirin.
- Sorunları giderme
- Önbelleği temizleme: Ayarlar → Uygulamalar → Chrome → Depolama → Önbelleği temizle.
- İzinler "takılı kaldıysa" Chrome'u yeniden yükleyin veya sistemi güncelleyin.
- Erişimi ele geçirebilecek üçüncü taraf antivirüsleri/dosya yöneticilerini devre dışı bırakın.
Gizlilik konusunda endişeliyseniz, "Gizli Sekme"yi kullanın ve senkronizasyonu devre dışı bırakın: Bu, FileProvider'ın çalışmasını durdurmaz ancak indirmelerin hesapla ilişkilendirilmesini azaltır.
Geliştiriciler için: FileProvider yapılandırma örneği
AndroidManifest.xml dosyasına ekleyin (örnek):
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.android.chrome.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
res/xml/file_paths.xml örneği:
<paths>
<external-files-path name="downloads" path="." />
</paths>
Bu, verilen URI'ları gerekli dizinlerle sınırlayacaktır.
Sık yapılan hatalar
- Yanlış indirme klasörü: Chrome korumalı /Android/data dizinine yazmaya çalışıyor — yolu Downloads olarak değiştirin.
- Gereksiz yere "Tüm dosyalar" izni verme: Geniş haklar tanır ve riski artırır. Tercihen SAF veya kullanıcı tarafından klasör seçimi kullanılmalıdır.
- Üçüncü taraf uygulamaların erişimi engellemesi: Antivirüsler ve dosya yöneticileri bazen engel olabilir. Bunları devre dışı bırakıp tekrar kontrol edin.
SSS
- Her zaman "Tüm dosyalar" izni vermek gerekir mi? Hayır — çoğu zaman "Dosyalar ve medya" izni veya SAF üzerinden klasör seçimi yeterlidir.
- FileProvider tüm dosyalarımı okuyabilir mi? Hayır — yalnızca uygulamanın (bu durumda Chrome) URI oluşturduğu dosyaları aktarır.
- İzin verdikten sonra dosyalar inmiyorsa ne yapmalı? Uygulama önbelleğini temizleyin ve Chrome'u yeniden başlatın; gerekirse yeniden yükleyin.
İzinleri bir kez, minimum gerekli hakları seçerek yapılandırın; Chrome, gereksiz açılır pencereler olmadan dosyaları doğru şekilde kaydedip açacaktır.