Android 10'dan itibaren, Kişi Sağlayıcı bileşeni (bir cihazın kişiler uygulamasında görülen verilerin kaynağı) tarafından yönetilen kişiler yakınlığı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 daha fazla kullanıcı gizliliği sağlamak için veri erişilebilirliğiyle ilgili değişiklikleri içerir. Birincisi, temel alınan veritabanı, kişi yakınlıkları verilerini içermez. Bu nedenle uygulamalar yazamaz veya ondan okuyamaz. Değişiklikler şunları içerir:
- Kişi Sağlayıcı, bir kullanıcıyla kaç kez iletişime geçildiği, en son ne zaman iletişim kurulduğu, kullanılan uygulama, iletişime geçilen kişi veya ilgili herhangi bir geçmiş veri gibi kişilerle yakın ilgi alanıyla ilgili verileri kaydetmez.
- Kişi 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ük kişi sıralaması sağlamaz. (Ancak, kullanıcı kontrollü, 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ı özelliklerine dayanan uygulamaları güncelleyin. Kullanımdan kaldırılan işlevlere geçici çözüm olarak tasarlanan API sürümlerine izin verilmez.
Android 9 ve önceki sürümler için, Kişi Sağlayıcıdan gelen kişi etkileşimi verileri kaldırılmadı. Bunun yerine, Android 10'daki eşdeğerini simüle etmek için kişi etkileşimi verileri düzenli aralıklarla (yaklaşık 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ı, bir kullanıcının 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. - Bunlar, Android 10'a yükseltme yapıldığında (etkilenen sütunlara bağlı olarak
null
veya 0 olarak ayarlanır) temizlenir. - Otomatik tamamlama sorgusu API'lerinde sıralama, hiçbir zaman yakınlık bilgilerine göre alfabetik olarak sıralanmış sonuçları döndürür.
- Sık iletişim kuran kişiler için API çağrıları (örneğin,
CONTENT_FREQUENT_URI
filtre dizesini kullanarak) sonuç döndürmez.
Genel olarak, kullanımdan kaldırılan Kişi Sağlayıcı API öğelerinden herhangi biri sayaç kullanıyorsa, bu sayaçlar (Android 10'da kullanıldığında) 0 içerir ve sorgulandığında 0 döndürür. Etkilenen API'lerden gelen güncelleme istekleri yoksayılır. Örneğin, ContactsContract.DataUsageFeedback
sınıfı kullanımdan kaldırılmıştır, bu nedenle bu sınıfa yapılan güncelleme ve silme çağrıları yoksayılır.
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 bulunabilir. Kullanımdan kaldırılan API alanları, davranışları listelendiği gibi döndürür. Bu kullanımdan kaldırılan alanlardan biri, API'lerinizin birçoğunda kullanılabileceğinden, kullanım durumlarınızı 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 içerir. Bunları değiştirme girişimleri yoksayılır. |
Contacts | markAsContacted() | İşlem yok. |
ContactsContract.DataUsageFeedback | | İşlem yok. |
ContactsContract.Contacts | Sık ( 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 temaslar döndürülmedi. |
ContactsContract.CommonDataKinds.Email ContactsContract.CommonDataKinds.Phone ContactsContract.CommonDataKinds.Callable | Filtre (otomatik tamamlama olarak da adlandırılır) API'leri | Sonuçlar yakınlığa göre sıralanmaz. Bunlar, yıldızlı ve isme 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ız gerekmez. Android işletim sistemi platformunda kullanıcı gizliliğini artırma girişiminin bir parçasıdırlar. Ancak, uygulamalarınız kullanımdan kaldırılmış özelliklere güveniyorsa, değişiklikleri telafi etmek için uygulamalarınızı güncellemek isteyebilirsiniz. Ayrıca, Kişi Sağlayıcısının çatallı sürümünü kullanıyorsanız, Kişi Sağlayıcınızı güncellemeniz gerekir.
Özelleştirme yok
Kişilerin yakınlık bilgileri değişikliklerini özelleştirmeyin veya bu değişiklikler etrafında çalışmayın. Çerçevede yerleşik olarak bulunurlar ve herhangi bir değişiklik yapmak sizi uyumluluktan uzaklaştırır. Asla varsayılan ayarları değiştirmeyin veya arka kapı alternatifleri sunmayın.