Android'de depolama alanı güncellemeleri ↗11

Android 11 (API düzeyi 30), platformu daha da geliştirerek harici depolama alanındaki uygulama ve kullanıcı verilerini daha iyi korur. Bu sürümde ham dosya yolu erişimi, medyalar için toplu düzenleme işlemleri ve Depolama Erişim Çerçevesi için güncellenmiş kullanıcı arayüzü gibi çeşitli geliştirmeler sunulmuştur.

Sürümde, kapsamlı depolama alanı ile ilgili iyileştirmeler de sunulmaktadır. Böylece geliştiriciler, bu depolama modelini kullanmaya geçiş yaptıktan sonra depolama alanı kullanım alanlarını daha kolay yerine getirebilirler.

Kapsamlı depolama alanı yaptırımı

Android 11 üzerinde çalışan ancak Android 10'u (API düzeyi 29) hedefleyen uygulamalar yine de requestLegacyExternalStorage özelliğini isteyebilir. Bu işaret, uygulamaların farklı dizinlere ve farklı medya dosyası türlerine erişim izni vermek gibi kapsamlı depolamayla ilişkili değişiklikleri geçici olarak devre dışı bırakmasına olanak tanır. Uygulamanızı Android 11'i hedefleyecek şekilde güncelledikten sonra, sistem requestLegacyExternalStorage işaretini yoksayar.

Android 10 ile uyumluluğu sürdürün

Uygulamanız Android 10 cihazlarda çalışırken kapsamlı depolama alanının kapsamı dışında kalmayı seçerse uygulamanızın manifest dosyasında requestLegacyExternalStorage öğesini true olarak ayarlamaya devam etmeniz önerilir. Bu şekilde, uygulamanız Android 10 çalıştıran cihazlarda beklendiği gibi davranmaya devam edebilir.

Kapsamlı depolama alanı kullanılırken görülebilen dizinlere verileri taşıyın

Uygulamanız eski depolama modelini kullanıyorsa ve daha önce Android 10 veya önceki sürümleri hedefliyorsa kapsamlı depolama modeli etkinleştirildiğinde verileri uygulamanızın erişemeyeceği bir dizinde depoluyor olabilirsiniz. Android 11'i hedeflemeden önce verileri, kapsamlı depolamayla uyumlu bir dizine taşıyın.

Kapsamı test amaçlı depolama

Uygulamanızın hedef SDK sürümü ve manifest işareti değerlerinden bağımsız olarak, uygulamanızda kapsamlı depolama özelliğini etkinleştirmek için aşağıdaki uygulama uyumluluğu işaretlerini etkinleştirin:

Kapsamlı depolama alanını devre dışı bırakmak ve bunun yerine eski depolama modelini kullanmak için her iki işareti de kaldırın.

Cihaz depolama alanını yönetme

Android 11'den itibaren, kapsamlı depolama modelini kullanan uygulamalar yalnızca kendi uygulamaya özel önbellek dosyalarına erişebilir. Uygulamanızın cihaz depolama alanını yönetmesi gerekiyorsa boş alan sorgulama talimatlarını uygulayın.

  1. ACTION_MANAGE_STORAGE intent işlemini çağırarak boş alanı kontrol edin.
  2. Cihazda yeterli boş alan yoksa tüm önbellekleri temizlemek için kullanıcıdan uygulamanıza izin vermesini isteyin. Bunun için ACTION_CLEAR_APP_CACHE intent işlemini çağırın.

Harici depolama alanındaki uygulamaya özel dizin

Android 11'den itibaren uygulamalar, harici depolama alanında kendi uygulamaya özel dizini oluşturamaz. Sistemin uygulamanız için sağladığı dizine erişmek üzere getExternalFilesDirs() numarasını arayın.

Medya dosyasına erişim

Kullanıcı gizliliğini korurken medyaya erişimi kolaylaştırmak için Android 11'e aşağıdaki özellikleri ekler.

Toplu işlemler gerçekleştirme

Cihazlar arasında tutarlılık ve daha fazla kullanıcı kolaylığı için Android 11, medya dosyası gruplarını yönetmeyi kolaylaştıran çeşitli yöntemler ekler.

Doğrudan dosya yollarını ve yerel kitaplıkları kullanarak dosyalara erişme

Android 11, uygulamanızın üçüncü taraf medya kitaplıklarıyla daha sorunsuz çalışmasına yardımcı olmak amacıyla MediaStore API dışındaki API'leri kullanarak doğrudan dosya yollarını kullanarak paylaşılan depolama alanındaki medya dosyalarına erişmenizi sağlar. Bu API'ler arasında şunlar bulunur:

  • File API.
  • fopen() gibi yerel kitaplıklar.

Diğer uygulamalardaki verilere erişim

Sistem, Android 11 veya sonraki sürümleri çalıştıran cihazlarda kullanıcı gizliliğini korumak için uygulamanızın diğer uygulamaların özel dizinlerine erişimini daha da kısıtlar.

Dahili depolama alanındaki veri dizinlerine erişim

Android 9 (API düzeyi 28), dahili depolama alanındaki veri dizinlerindeki dosyaları diğer uygulamaların erişimine açık hale getirecek uygulamaları kısıtlamaya başladı. Android 9 veya sonraki sürümleri hedefleyen uygulamalar, veri dizinlerindeki dosyaları dünya için erişilebilir hale getiremez.

Android 11 bu kısıtlamanın kapsamını genişletiyor. Uygulamanız Android 11'i hedefliyorsa diğer uygulamalar Android 8.1 (API düzeyi 27) veya önceki sürümleri hedeflese ve veri dizinindeki dosyaları herkes tarafından okunabilir hale getirse bile başka bir uygulamanın veri dizinindeki dosyalara erişemez.

Harici depolama alanındaki uygulamaya özel dizinlere erişim

Android 11'de uygulamalar artık harici depolama alanındaki hiçbir uygulamanın özel, uygulamaya özgü dizinindeki dosyalara erişemeyecek.

Doküman erişimi kısıtlamaları

Geliştiricilere test için zaman tanımak amacıyla, Depolama Erişim Çerçevesi (SAF) ile ilgili aşağıdaki değişiklikler yalnızca uygulamanız Android 11 veya sonraki sürümleri hedefliyorsa geçerli olur.

Dizinlere erişim

Artık aşağıdaki dizinlere erişim istemek için ACTION_OPEN_DOCUMENT_TREE intent işlemini kullanamazsınız:

  • Dahili depolama biriminin kök dizini.
  • Kartın emülasyon veya çıkarılabilir olmasına bakılmaksızın, cihaz üreticisinin güvenilir olarak kabul ettiği her bir SD kart biriminin kök dizini. Bir uygulamanın çoğu zaman başarılı bir şekilde erişebildiği hacim, güvenilir birimdir.
  • Download dizini.

Dosyalara erişim

Artık kullanıcının aşağıdaki dizinlerden dosyaları tek tek seçmesini istemek için ACTION_OPEN_DOCUMENT_TREE veya ACTION_OPEN_DOCUMENT intent işlemini kullanamazsınız:

  • Android/data/ dizini ve tüm alt dizinler.
  • Android/obb/ dizini ve tüm alt dizinler.

Değişikliği test etme

Bu davranış değişikliğini test etmek için aşağıdakileri yapın:

  1. ACTION_OPEN_DOCUMENT işlemiyle intent çağırın. Android/data/ ve Android/obb/ dizinlerinin görünmediğinden emin olun.
  2. Aşağıdakilerden birini yapın:
  3. ACTION_OPEN_DOCUMENT_TREE işlemiyle intent çağırın. Download dizininin göründüğünden ve dizinle ilişkili işlem düğmesinin devre dışı bırakıldığından emin olun.

İzinler

Android 11'de depolama izinleriyle ilgili aşağıdaki değişiklikler kullanıma sunuluyor.

Herhangi bir sürümü hedefle

İlk iletişim kutusunda, Ayarlarda İzin Ver adlı bir bağlantı görüntülenir.
Şekil 1. Bir uygulama, kapsamlı depolama alanı kullandığında ve READ_EXTERNAL_STORAGE izni istediğinde gösterilen iletişim kutusu.

Aşağıdaki değişiklikler, uygulamanızın hedef SDK sürümünden bağımsız olarak Android 11'de geçerli olur:

  • Storage çalışma zamanı izni, Dosyalar ve Medya olarak yeniden adlandırıldı.
  • Uygulamanız kapsamlı depolama alanı özelliğini devre dışı bırakmadıysa ve READ_EXTERNAL_STORAGE iznini istiyorsa kullanıcılar Android 10'a kıyasla farklı bir iletişim kutusu görürler. İletişim kutusu, Şekil 1'de gösterildiği gibi uygulamanızın fotoğraflara ve medyaya erişim isteğinde bulunduğunu belirtir.

    Kullanıcılar, sistem ayarlarında hangi uygulamaların READ_EXTERNAL_STORAGE iznine sahip olduğunu görebilir. Ayarlar > Gizlilik > İzin yöneticisi > Dosyalar ve medya sayfasında, izne sahip her uygulama, Tüm dosyalar için izin verilen bölümünün altında listelenir. Uygulamanız Android 11'i hedefliyorsa "tüm dosyalara" erişimin salt okunur olduğunu unutmayın. Bu uygulamayı kullanarak paylaşılan depolama alanındaki tüm dosyaları okumak ve yazmak için tüm dosyalara erişim iznine sahip olmanız gerekir.

Android 11'i hedefleme

Uygulamanız Android 11'i hedefliyorsa hem WRITE_EXTERNAL_STORAGE izni hem de WRITE_MEDIA_STORAGE özel izni artık ek erişim sağlamaz.

Android 10 (API düzeyi 29) veya sonraki sürümleri çalıştıran cihazlarda uygulamanızın, depolama alanıyla ilgili herhangi bir izin istemeden MediaStore.Downloads gibi iyi tanımlanmış medya koleksiyonlarına katkıda bulunabileceğini unutmayın. Uygulamanızda medya dosyalarıyla çalışırken yalnızca gerekli izinleri isteme hakkında daha fazla bilgi edinin.

Tüm dosyalara erişim

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ı izleyebilir. Ancak bazı uygulamalar, bir cihazda dosyalara geniş kapsamlı erişim gerektiren temel bir kullanım alanına sahiptir. Ancak bunu, gizlilik haklarına saygılı depolama en iyi uygulamaları ile verimli bir şekilde yapamaz. Android, bu durumlar için Tüm dosyalara erişim adı verilen özel bir uygulama erişimi sağlar. Daha fazla bilgi edinmek için depolama cihazında tüm dosyaları yönetme ile ilgili kılavuza bakın.

Ek kaynaklar

Android 11'de depolama alanıyla ilgili değişiklikler hakkında daha fazla bilgi için aşağıdaki materyalleri görüntüleyin:

Blog yayınları

Videolar