Depolama cihazındaki tüm dosyaları yönetme

Paylaşılan depolama alanına erişim gerektiren uygulamaların çoğu, medya dosyalarını paylaşma ve medya dışı dosya paylaşma ile ilgili en iyi uygulamaları izleyebilir. Ancak bazı uygulamaların bir cihazdaki dosyalara geniş kapsamlı erişimi gerektiren temel bir kullanım alanı vardır, ancak gizlilik haklarına saygılı depolama en iyi uygulamalarını kullanarak bunlara verimli bir şekilde erişemez. Android, bu durumlar için tüm dosyalara erişim adlı özel bir uygulama erişimi sağlar.

Örneğin, bir antivirüs uygulamasının birincil kullanım alanı düzenli tarama yapmayı gerektirebilir. farklı dizinlerdeki birçok dosyadan oluşur. Bu tarama, sistem dosyası seçiciyi kullanarak dizinleri seçmek için kullanıcının tekrar tekrar etkileşimde bulunmasını 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 hususları dikkate almayı gerektirir.

Tüm dosyalara erişim iste

Uygulamalar, aşağıdakileri yaparak kullanıcıdan tüm dosyalara erişim isteğinde bulunabilir:

  1. MANAGE_EXTERNAL_STORAGE iznini manifest dosyasında beyan edin.
  2. Şunu kullanın: ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION Kullanıcıları sistem ayarları sayfasına yönlendirmek için intent işlemi uygulamanız için şu seçenek: Tüm dosyaları yönetmek için erişime izin ver.

Uygulamanıza MANAGE_EXTERNAL_STORAGE izni verilip verilmediğini belirlemek için izin, çağrı Environment.isExternalStorageManager()

MANAGE_EXTERNAL_STORAGE tarafından izin verilen işlemler

MANAGE_EXTERNAL_STORAGE izni şunları sağlar:

  • Paylaşılan paylaşılan tüm dosyalara okuma ve yazma erişimi depolama alanı.

  • MediaStore.Files tablosunun içeriğine erişme

  • Hem hareket halindeyken kullanılabilen USB (OTG) sürücüsünün hem de SD'nin kök dizinine erişim. kartını inceleyebilirsiniz.

  • Şunlar hariç tüm dahili depolama dizinlerine yazma erişimi⁠: /Android/data/, /sdcard/Android ve çoğu alt dizini /sdcard/Android. Bu yazma erişimi, doğrudan dosyayı path erişimi de vardır.

    Bu izne sahip olan uygulamalar yine de uygulamaya özel dizinleri de kullanabilirsiniz. çünkü bu dizinler aynı tarayıcıda Android/data/ alt dizinleri olarak depolama hacminizi artırır.

MANAGE_EXTERNAL_STORAGE iznine sahip olan uygulamalar bu bilgilere erişebilir ek dosyalara ve dizinlere MediaStore API veya doğrudan dosya yollar var. Depolama Erişim Çerçevesi ancak bir dosyaya veya dizine yalnızca MANAGE_EXTERNAL_STORAGE iznine sahip olun.

Başka bir uygulamanın depolama alanı yönetimi etkinliğini çağırma

Android 12 (API düzeyi 31) ve sonraki sürümlerde MANAGE_EXTERNAL_STORAGE ve QUERY_ALL_PACKAGES izinleri (örneğin, dosya yönetimi uygulamaları) getManageSpaceActivityIntent() Kullanıcıları başka bir uygulamanın özel alan yönetimine göndermek için olabilir.

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 uygulamada özel bir "alanı yönet" etkinliği tanımlanmışsa PendingIntent. Dosya çağıran bir yönetim uygulamasıdır. getManageSpaceActivityIntent() yöntemini çağıran Kullanıcıları özel etkinliğe göndermek için döndürülen niyeti çağırır.
  • Belirtilen paket adına sahip uygulama "alan yönet" etkinliği tanımlamıyorsa null.

Test için MANAGE_EXTERNAL_STORAGE özelliğini etkinleştir

MANAGE_EXTERNAL_STORAGE izninin uygulamanızı nasıl etkilediğini keşfetmek için testi izinle etkinleştirebilirsiniz. Bunu yapmak için aşağıdaki komutu çalıştırın: komutunu ç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 sağlanır.

Google Play Store, paylaşılan depolamaya geniş erişim iznini sınırlamak için Android 11'i (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ğerlendirmek üzere politikasını güncelledi. Bu politika Mayıs 2021'den itibaren geçerlidir.

Uygulamanız Android 11 veya sonraki bir sürümü hedeflediğinde MANAGE_EXTERNAL_STORAGE izniniz varsa Android Studio şu lint uyarısını gösterir: Şekil 1'de görünür. Bu uyarı, Google Play Store'da geçerli bir izin kullanımını sınırlayan bir politika izler.

Şekil 1. Android Studio'da, geliştiricilere MANAGE_EXTERNAL_STORAGE ile ilgili Google Play politikası izni gerekir.

MANAGE_EXTERNAL_STORAGE iznini yalnızca uygulamanız Depolama Erişim Çerçevesi veya Media Store API gibi gizliliği daha fazla koruyan API'leri verimli 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ızda aşağıdakilerden herhangi birine benzer bir kullanım alanı varsa MANAGE_EXTERNAL_STORAGE iznini isteyebileceğini unutmayın:

  • Dosya yöneticileri
  • Yedekleme ve geri yükleme uygulamaları
  • Virüsten korunma uygulamaları
  • Doküman yönetimi uygulamaları
  • Cihaz üzerinde dosya arama
  • Disk ve dosya şifreleme
  • Cihazlar arasında veri taşıma