Android 10'dan başlayarak, Kişiler Sağlayıcı bileşeni (cihazın kişiler uygulamasında görülen verilerin kaynağı) tarafından yönetilen kişiler ilgi alanıyla ilgili verilere, Android 9 ve önceki sürümlerden farklı şekilde erişilir.
Android 10'dan önce uygulamalar, verilere erişmek ve bunları bir cihaz ile çevrimiçi hizmetler arasında aktarmak için Kişi Sağlayıcıyı kullanıyordu. Android 10, Kişi Sağlayıcıyı kullanan tüm Android 10 cihazlarda kullanıcı gizliliğinin artırılmasını sağlamak için veri erişilebilirliğine ilişkin değişiklikler içerir. Birincisi, temeldeki veri tabanı temas yakınlıkları verilerini içermiyor. Bu nedenle uygulamalar ona yazamaz veya okuyamaz. Değişiklikler aşağıdakileri içerir:
- Kişi Sağlayıcısı, bir kullanıcıyla kaç kez iletişim kurulduğu, son iletişim zamanı, kullanılan uygulama, iletişim kurulan kişi gibi kişilerle yakın ilgi alanıyla ilgili verileri veya ilgili geçmiş verileri kaydetmez.
- Kişiler Sağlayıcı otomatik tamamlama API'sindeki
MultiAutoCompleteTextView
sınıfı, sorgu sonuçlarını etkileşim sayacına göre sıralamaz. - Android çerçevesi örtülü kişiler sıralaması sağlamaz. (Ancak, kullanıcı tarafından kontrol edilen, açık kişi sıralaması ( yıldızlı kişiler gibi) kalır).
Bu değişiklikleri uygulamak için aşağıdakilerden birini yapın:
- En son Kişi Sağlayıcıyı kullanın.
- Sürümünüzü güncelleyin (çatallı bir sürüm kullanıyorsanız).
Ayrıca, kullanımdan kaldırılan Kişi Sağlayıcı özelliklerini kullanan tüm uygulamaları güncelleyin. Kullanımdan kaldırılan işlevlere geçici çözüm olarak tasarlanmış API sürümlerine izin verilmez.
Android 9 ve önceki sürümler için Kişi Sağlayıcısından alınan kişi-etkileşim verileri kaldırılmamıştır. Bunun yerine, Android 10'daki eşdeğerini simüle etmek için kişi-etkileşim verileri periyodik olarak (yaklaşık olarak günde bir kez) temizlenir. Kişi Sağlayıcısı bu bilgileri yalnızca geçici olarak saklar.
API değişiklikleri
Bu değişikliklerin API'ler üzerinde büyük bir etkisi olması bekleniyor. Örneğin, otomatik tamamlama sıralaması da iyi performans göstermez. API davranışı üzerindeki olası etkiler aşağıdakileri içerir:
- Kişi Sağlayıcısı, kullanıcının kişiyle ilgili tercihlerini veya kişiyle olan etkileşimlerini
ContactsContract.Contacts
tablo sütunlarında saklamaz. - Otomatik tamamlama API'si, sonuçları etkileşim sayacına göre sıralamaz.
-
TIMES_CONTACTED
/TIMES_USED
veLAST_TIME_CONTACTED
/LAST_TIME_USED
sütunları güncellenmeyecek. - Android 10'a yükseltme sonrasında bunlar silinir (etkilenen sütunlara bağlı olarak
null
veya 0'a ayarlanır). - Otomatik tamamlama sorgu API'lerindeki sıralama, sonuçları hiçbir zaman yakın ilgi bilgisine göre değil, alfabetik olarak sıralanmış olarak döndürür.
- Sık görüşülen kişilere yönelik API çağrıları (örneğin,
CONTENT_FREQUENT_URI
filtre dizesini kullanan) hiçbir sonuç döndürmez.
Genel olarak, kullanımdan kaldırılan Contacts Provider API öğelerinden herhangi biri sayaç kullanıyorsa bu sayaçlar (Android 10'da kullanıldığında) 0 içerir ve sorgulandığında 0 değerini döndürür. Etkilenen API'lerden gelen güncelleme istekleri dikkate alınmaz. Örneğin, ContactsContract.DataUsageFeedback
sınıfı kullanımdan kaldırıldı, dolayısıyla bu sınıfa yapılan güncelleme ve silme çağrıları dikkate alınmaz.
API'leri etkileyen alanlar
Bu alanlar Android 10'da değişti:
-
ContactsContract.ContactOptionsColumns#TIMES_CONTACTED
-
ContactsContract.ContractOptionsColumns.LAST_TIME_CONTACTED
-
ContactsContract.DataUsageStatColumns#TIMES_USED
-
ContactsContract.DataUsageStatColumns#LAST_TIME_USED
-
ContactsContract#CONTENT_STREQUENT_FILTER_URI
-
ContactsContract.Contacts#CONTENT_STREQUENT_URI
-
ContactsContract.Contacts#CONTENT_FREQUENT_URI
-
ContactsContract.Contacts#ENTERPRISE_CONTENT_FILTER_URI
-
ContactsContract.Contacts#CONTENT_FILTER_URI
Android 10'daki etkilenen alanlar, aşağıdaki tabloda belirtildiği gibi farklı API'lerde mevcut olabilir. Kullanımdan kaldırılan API alanları, listelenen davranışları döndürür. Kullanımdan kaldırılan bu alanlardan biri birçok API'nizde kullanılabileceğinden kullanım örneklerinizi doğrulayın.
Sınıf | API alanları | 10 iade |
---|---|---|
ContactsContract.Contacts ContactsContract.RawContacts ContactsContract.Data ContactsContract.Entity | ContactOptionsColumns TIMES_CONTACTED LAST_TIME_CONTACTED | Bu sütunlar, nasıl kullanıldıklarına bakılmaksızın her zaman 0 değerini içerir. Bunları değiştirme girişimleri göz ardı edilir. |
Contacts | markAsContacted() | İşlem yok. |
ContactsContract.DataUsageFeedback | | İşlem yok. |
ContactsContract.Contacts | Strequent ( yıldızlı + sık)CONTENT_STREQUENT_FILTER_URI CONTENT_STREQUENT_URI CONTENT_FREQUENT_URI | Yalnızca yıldızlı kişileri döndürür. Sık görüşülen kişi bulunamadı. |
ContactsContract.CommonDataKinds.Email ContactsContract.CommonDataKinds.Phone ContactsContract.CommonDataKinds.Callable | API'leri filtreleyin (otomatik tamamlama da denir) | Sonuçlar yakınlığa göre sıralanmıyor. Bunlar yıldız işaretine ve ada göre sıralanır. |
Alternatifler
Kullanımdan kaldırılan API alanlarının alternatifi yoktur. Yeni API'ler veya yeni alanlar biçiminde olsun, bu kısıtlamaları aşmak için tasarlanmış geçici çözümlere izin verilmez.
Uygulama
Bu değişiklikleri uygulamak için herhangi bir şey yapmanıza gerek yoktur. Bunlar, Android işletim sistemi platformunda kullanıcı gizliliğini artırma girişiminin bir parçasıdır. Ancak uygulamalarınız kullanımdan kaldırılmış özelliklere dayanıyorsa değişiklikleri telafi etmek için uygulamalarınızı güncellemek isteyebilirsiniz. Ayrıca, Kişi Sağlayıcının çatallanmış bir sürümünü kullanıyorsanız Kişi Sağlayıcınızı güncellemeniz gerekir.
Özelleştirme yok
Kişilerin ilgi alanı bilgileri değişikliklerini özelleştirmeyin veya bu değişiklikleri düzeltmeyin. Bunlar çerçevenin içine yerleştirilmiştir ve herhangi bir değişiklik yapmak sizi uyumluluktan çıkarır. Asla varsayılan ayarları değiştirmeyin veya arka kapı alternatifleri sunmayın.