Paylaşılan depolama alanı erişimi gerektiren uygulamaların çoğu, medya dosyalarını paylaşma ve medya dışı dosyaları paylaşma ile ilgili en iyi uygulamaları takip edebilir. Ancak bazı uygulamaların temel kullanım alanı, cihazdaki dosyalara geniş kapsamlı erişim gerektirir ancak gizlilik haklarına saygılı depolama alanıyla ilgili en iyi uygulamaları kullanarak bu dosyalara verimli bir şekilde erişemezler. Android, bu gibi durumlar için tüm dosyalara erişim adlı özel bir uygulama erişimi sunar.
Örneğin, bir antivirüs uygulamasının birincil kullanım alanı, farklı dizinlerdeki birçok dosyanın düzenli olarak taranmasını gerektirebilir. Bu tarama, sistem dosya seçicisini kullanarak dizinleri seçmek için tekrarlanan kullanıcı etkileşimleri gerektiriyorsa kötü bir kullanıcı deneyimi sunar. Dosya yöneticisi uygulamaları, yedekleme ve geri yükleme uygulamaları ve doküman yönetimi uygulamaları gibi diğer kullanım alanları da benzer şekilde değerlendirilmelidir.
Tüm dosyalara erişim izni isteme
Uygulamalar, aşağıdaki adımları uygulayarak kullanıcıdan tüm dosyalara erişim izni isteyebilir:
- Manifest dosyasında
MANAGE_EXTERNAL_STORAGEiznini beyan edin. - Kullanıcıları, uygulamanız için Tüm dosyaları yönetme erişimine izin ver seçeneğini etkinleştirebilecekleri bir sistem ayarları sayfasına yönlendirmek için
ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSIONintent işlemini kullanın.
Uygulamanıza MANAGE_EXTERNAL_STORAGE izninin verilip verilmediğini belirlemek için Environment.isExternalStorageManager() yöntemini çağırın.
MANAGE_EXTERNAL_STORAGE tarafından izin verilen işlemler
MANAGE_EXTERNAL_STORAGE izni şunları sağlar:
Paylaşılan depolama alanındaki tüm dosyalara okuma ve yazma erişimi.
MediaStore.Filestablosunun içeriğine erişim.Hem USB on-the-go (OTG) sürücüsünün hem de SD kartın kök dizinine erişim.
/Android/data/,/sdcard/Androidve/sdcard/Androiddizininin çoğu alt dizini hariç tüm dahili depolama dizinlerine yazma erişimi. Bu yazma erişimi, doğrudan dosya yolu erişimini içerir.Bu iznin verildiği uygulamalar, diğer uygulamalara ait uygulamaya özel dizinlere erişemez. Bunun nedeni, bu dizinlerin bir depolama biriminde
Android/data/alt dizinleri olarak görünmesidir.
MANAGE_EXTERNAL_STORAGE iznine sahip olan uygulamalar, MediaStore API'yi veya doğrudan dosya yollarını kullanarak bu ek dosya ve dizinlere erişebilir. Ancak Storage Access Framework'ü kullandığınızda, bir dosya veya dizine yalnızca MANAGE_EXTERNAL_STORAGE izni olmadan erişebiliyorsanız erişebilirsiniz.
Başka bir uygulamanın depolama alanı yönetimi etkinliğini çağırın.
Android 12 (API düzeyi 31) ve sonraki sürümlerde hem MANAGE_EXTERNAL_STORAGE hem de QUERY_ALL_PACKAGES iznine sahip olan uygulamalar (ör. dosya yönetimi uygulamaları), kullanıcıları başka bir uygulamanın özel alan yönetimi etkinliğine göndermek için getManageSpaceActivityIntent() kullanabilir.
getManageSpaceActivityIntent() yöntemi, bir paket adı ve istek kodu alır ve aşağıdakilerden birini döndürür:
- Belirtilen paket adına sahip uygulama, özel bir "alanı yönet" etkinliği tanımlamışsa
PendingIntent.getManageSpaceActivityIntent()yöntemini çağıran dosya yönetimi uygulaması, kullanıcıları özel etkinliğe göndermek için döndürülen intent'i çağırabilir. - Belirtilen paket adına sahip uygulama bir "alanı yönet" etkinliği tanımlamıyorsa
null.
Test için MANAGE_EXTERNAL_STORAGE iznini etkinleştirme
MANAGE_EXTERNAL_STORAGE izninin uygulamanızı nasıl etkilediğini görmek için izni test amacıyla etkinleştirebilirsiniz. Bunun için test cihazınıza bağlı makinede aşağıdaki komutu çalıştırın:
adb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow
Google Play bildirimi
Bu bölümde, Google Play'de uygulama yayınlayan geliştiriciler için bir bildirim yer almaktadır.
Google Play Store, paylaşılan depolama alanına geniş erişimi sınırlamak için politikasını güncelleyerek Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen ve MANAGE_EXTERNAL_STORAGE izni aracılığıyla tüm dosyalara erişim isteyen uygulamaları değerlendirmeye aldı. Bu politika, Mayıs 2021'den itibaren geçerlidir.
Uygulamanız Android 11 veya sonraki sürümleri hedeflediğinde ve MANAGE_EXTERNAL_STORAGE iznini beyan ettiğinde Android Studio, Şekil 1'de görünen hata analizi uyarısını gösterir. Bu uyarı, Google Play Store'da iznin kullanımını sınırlayan bir politika olduğunu hatırlatır.
MANAGE_EXTERNAL_STORAGE izniyle ilgili Google Play politikasını hatırlatan hata analizi uyarısı.
MANAGE_EXTERNAL_STORAGE iznini yalnızca uygulamanız Depolama Erişim Çerçevesi veya Media Store API gibi gizlilik haklarına saygılı API'leri etkili bir şekilde kullanamadığında isteyin. Uygulamanızın izin kullanımı, izin verilen kullanımlar kapsamına girmeli ve uygulamanın temel işleviyle doğrudan bağlantılı olmalıdır. Uygulamanız aşağıdakilerden herhangi birine benzer bir kullanım alanı içeriyorsa MANAGE_EXTERNAL_STORAGE iznini isteyebilir:
- Dosya yöneticileri
- Yedekleme ve geri yükleme uygulamaları
- Virüsten korunma uygulamaları
- Belge yönetimi uygulamaları
- Cihaz üzerinde dosya arama
- Disk ve dosya şifreleme
- Cihazlar arası veri taşıma