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

Paylaşılan depolama alanı erişimi gerektiren uygulamaların çoğu en iyi medya paylaşımlarıyla ilgili uygulamaların dosyaları ve medya dışı öğeleri paylaşma dosyaları ile senkronize edilir. 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, bunlar için tüm dosyalara erişim adı verilen özel bir uygulama erişimi sağlar durumlardan birine sahip olmaları halinde başlatabilirler.

Ö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 işlemi tekrarlanırsa sistem dosya seçiciyi kullanarak dizinleri seçmek için kullanıcı etkileşimlerini kötü bir kullanıcı deneyimi sunar. Dosya yöneticisi uygulamaları, yedekleme ve geri yükleme uygulamaları ile doküman yönetimi uygulamaları gibi düşünmelisiniz.

Tüm dosyalara erişim iste

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

  1. Tanımlayın MANAGE_EXTERNAL_STORAGE izninin olması gerekir.
  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ı.

  • İçeriklerine erişim MediaStore.Files tablosu.

  • 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 bir istekte bulunduğunda, aşağıdakilerden birini döndürür:

  • PendingIntent: belirtilen paket adı özel bir "alan yönet" tanımladı etkinliği'ne dokunun. 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 bir "yönet" tanımlamıyorsa null boşluk" etkinliği'ne dokunun.

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

MANAGE_EXTERNAL_STORAGE izninin uygulamanızı nasıl etkilediğini öğrenmek için: test izni etkinleştirebilir. 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 uyarı sağlanmaktadır.

Paylaşılan depolama alanına geniş kapsamlı erişimi sınırlamak için Google Play Store şunlarını güncelledi: politika Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen ve tüm dosyalara MANAGE_EXTERNAL_STORAGE izniyle erişebilir. Bu politika Yürürlüğe girme tarihi Mayıs 2021 itibarıyla sona erecek.

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 izinlerin kullanımını sınırlandıran 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 durumunda iste Depolama alanı gibi gizlilik haklarına daha saygılı API'lerden Erişim Çerçevesi veya Media Store API. Uygulamanızın kullanımı izinlerin kapsamı, izin verilen kullanımlar kapsamında olmalı ve doğrudan uygulamanın temel işlevi. Uygulamanızın kullanım alanı varsa bir web sitesini ziyaret ettiğinde, büyük olasılıkla MANAGE_EXTERNAL_STORAGE izin:

  • Dosya yöneticileri
  • Yedekleme ve geri yükleme uygulamaları
  • Virüsten korunma uygulamaları
  • Doküman yönetimi uygulamaları
  • Cihazda dosya arama
  • Disk ve dosya şifreleme
  • Cihazdan cihaza veri taşıma