Android 11 (API düzeyi 30), platformu daha da geliştirerek harici depolama alanındaki uygulama ve kullanıcı verilerini daha iyi koruma sağlar. 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 sunulmaktadır.
Sürüm, kapsamlı depolama ile ilgili iyileştirmeler de sunarak geliştiricilerin bu depolama alanı modelini kullanmaya geçtikten sonra depolama alanı kullanım alanlarını yerine getirmelerini kolaylaştırıyor.
Kapsamlı depolama yaptırımı
Android 11'de ç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 verme 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ürme
Uygulamanız Android 10 cihazlarda çalışırken kapsamlı depolama alanını devre dışı bırakırsa 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ı depolamayı kullanırken görünen dizinlere veri taşıma
Uygulamanız eski depolama modelini kullanıyorsa ve daha önce Android 10 veya önceki bir sürümü hedeflediyse verileri kapsamlı depolama modeli etkin durumdayken uygulamanızın erişemediği bir dizinde depoluyor olabilirsiniz. Android 11'i hedeflemeden önce verileri kapsamlı depolamayla uyumlu bir dizine taşıyın.
Kapsamlı depolamayı test etme
Uygulamanızda kapsamlı depolamayı etkinleştirmek için uygulamanızın hedef SDK sürümü ve manifest işareti değerlerinden bağımsız olarak aşağıdaki uygulama uyumluluğu işaretlerini etkinleştirin:
DEFAULT_SCOPED_STORAGE
(tüm uygulamalar için varsayılan olarak etkindir)FORCE_ENABLE_SCOPED_STORAGE
(varsayılan olarak tüm uygulamalar için devre dışıdır)
Kapsamlı depolamayı devre dışı bırakıp bunun yerine eski depolama modelini kullanmak için her iki işaretin de ayarını 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.
ACTION_MANAGE_STORAGE
intent işlemini çağırarak boş alan olup olmadığını kontrol edin.Cihazda yeterli boş alan yoksa kullanıcıdan tüm önbellekleri temizlemesi için uygulamanıza izin vermesini isteyin. Bunu yapmak için
ACTION_CLEAR_APP_CACHE
intent işlemini çağırın.
Harici depolama biriminde uygulamaya özel dizin
Android 11'den itibaren uygulamalar, harici depolamada kendi uygulamaya özel dizinlerini oluşturamaz. Sistemin uygulamanız için sağladığı dizine erişmek için getExternalFilesDirs()
numaralı telefonu arayın.
Medya dosyası erişimi
Android 11, kullanıcı gizliliğini korurken medyaya erişimi kolaylaştırmak için aşağıdaki özellikleri ekler.
Toplu işlemler gerçekleştirme
Android 11, cihazlar arasında tutarlılık sağlamak ve kullanıcılara kolaylık sunmak için medya dosyası gruplarını yönetmeyi kolaylaştıran çeşitli yöntemler ekler.
Dosyalara doğrudan dosya yollarını ve yerel kitaplıkları kullanarak erişin
Uygulamanızın üçüncü taraf medya kitaplıklarıyla daha sorunsuz çalışmasına yardımcı olmak için Android 11, doğrudan dosya yollarını kullanarak paylaşılan depolama alanındaki medya dosyalarına erişmek için MediaStore
API dışındaki API'leri kullanmanıza olanak tanır. Bu API'ler şunlardır:
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 dizinlerinde bulunan dosyaları diğer uygulamaların dünya çapında erişimine açık hale getirebilecek uygulamaları kısıtlamaya başladı. Android 9 veya sonraki bir sürümü hedefleyen uygulamalar veri dizinlerindeki dosyaları herkes tarafından erişilebilir hale getiremez.
Android 11, bu kısıtlamanın kapsamını genişletiyor. Uygulamanız Android 11'i hedefliyorsa, Android 8.1 (API düzeyi 27) veya altını hedefleyen ve veri dizinindeki dosyaları herkes tarafından okunabilir hale getiren 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 hiçbir uygulamanın harici depolama alanındaki uygulamaya özel dizinindeki dosyalara erişemez.
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 ACTION_OPEN_DOCUMENT_TREE
amaç işlemini kullanarak aşağıdaki dizinlere erişim isteğinde bulunamazsınız:
- Dahili depolama biriminin kök dizini.
- Kartın emüle edilmiş veya çıkarılabilir olmasına bakılmaksızın, cihaz üreticisinin güvenilir olarak kabul ettiği her SD kart biriminin kök dizini. Güvenilir bir birim, bir uygulamanın çoğu zaman başarıyla erişebildiği hacimdir.
Download
dizini.
Dosyalara erişim
ACTION_OPEN_DOCUMENT_TREE
veya ACTION_OPEN_DOCUMENT
amaç işlemini kullanarak kullanıcıdan aşağıdaki dizinlerdeki dosyaları tek tek seçmesini isteyemezsiniz:
Android/data/
dizini ve tüm alt dizinler.Android/obb/
dizini ve tüm alt dizinler.
Değişikliği test et
Bu davranış değişikliğini test etmek için aşağıdakileri yapın:
ACTION_OPEN_DOCUMENT
işlemiyle bir amaç çağırın.Android/data/
veAndroid/obb/
dizinlerinin görünmediğinden emin olun.- Aşağıdakilerden birini yapın:
RESTRICT_STORAGE_ACCESS_FRAMEWORK
uygulama uyumluluğu işaretini etkinleştirin.- Android 11 veya sonraki bir sürümü hedefleyin.
ACTION_OPEN_DOCUMENT_TREE
işlemiyle bir amaç çağırın.Download
dizininin göründüğünden ve dizinle ilişkili işlem düğmesinin devre dışı olduğundan emin olun.
İzinler
Android 11, depolama izinleriyle ilgili aşağıdaki değişiklikleri kullanıma sunar.
Herhangi bir sürümü hedefleme
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:
- Depolama çalışma zamanı izni, Dosyalar ve Medya olarak yeniden adlandırılır.
Uygulamanız kapsamlı depolamayı devre dışı bırakmadıysa ve
READ_EXTERNAL_STORAGE
izni istiyorsa kullanıcılar Android 10'a kıyasla farklı bir iletişim kutusu görür. İletişim kutusu, Şekil 1'de gösterildiği gibi uygulamanızın fotoğraflara ve medyaya erişim istediğini belirtir.Kullanıcılar, hangi uygulamaların
READ_EXTERNAL_STORAGE
iznine sahip olduğunu sistem ayarlarından görebilir. İzne sahip olan her uygulama, Ayarlar > Gizlilik > İzin yöneticisi > Dosyalar ve medya sayfasında Tüm dosyalar için izin veriliyor altında listelenir. Uygulamanız Android 11'i hedefliyorsa "tüm dosyalara" bu erişimin salt okunur olduğunu unutmayın. Bu uygulamayı kullanarak paylaşılan depolama alanındaki tüm dosyaları okumak ve bu dosyalara yazmak içintü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.
Uygulamanızın, Android 10 (API düzeyi 29) veya sonraki sürümleri çalıştıran cihazlarda depolamayla ilgili herhangi bir izin istemeden MediaStore.Downloads
gibi iyi tanımlanmış medya koleksiyonlarına katkıda bulunabileceğini unutmayın. Uygulamanızdaki medya dosyalarıyla çalışırken yalnızca gerekli izinleri nasıl isteyeceğiniz hakkında daha fazla bilgi edinin.
Tüm dosyalara erişim
Paylaşılan depolama alanı erişimi gerektiren uygulamaların çoğu, medya dosyaları paylaşma ve medya dışı dosyaları paylaşma ile ilgili en iyi uygulamaları izleyebilir. Ancak bazı uygulamaların bir cihazdaki dosyalara geniş kapsamlı erişim gerektiren temel bir kullanım alanı vardır, ancak bunu gizliliği koruyan depolama en iyi uygulamaları kullanarak verimli bir şekilde yapamazlar. 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 bir depolama cihazındaki tüm dosyaları yönetme ile ilgili kılavuza bakın.
Ek kaynaklar
Android 11'deki depolama alanında yapılan değişiklikler hakkında daha fazla bilgi için aşağıdaki malzemeleri görüntüleyin: