Android 10'dan itibaren, Kişi Sağlayıcı bileşeni (cihazın Kişiler uygulamasında görülen verilerin kaynağı) tarafından yönetilen, kişilerle ilgili yakınlık verilerine Android 9 ve önceki sürümlere kıyasla farklı bir şekilde erişilir.
Android 10'dan önce uygulamalar, verilere erişmek ve verileri cihaz ile online hizmetler arasında aktarmak için Kişiler 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şiklikler içerir. Örneğin, temel veritabanında kişi yakınlıkları verileri yoktur. Bu nedenle uygulamalar bu depolama alanına veri yazamaz veya bu alandan veri okuyamaz. Yapılan değişiklikler şunlardır:
- Kişi Sağlayıcı, kullanıcıyla iletişime geçme sayısı, son iletişim zamanı, kullanılan uygulama, iletişime geçilen kişi veya ilgili geçmiş veriler gibi kişilerle yakınlık ilişkili verileri kaydetmez.
- Kişi Sağlayıcı otomatik tamamlama API'sindeki
MultiAutoCompleteTextViewsınıfı, sorgu sonuçlarını etkileşim sayacına göre sıralamaz. - Android çerçevesi, gizli kişi sıralaması sağlamaz. (Ancak kullanıcı tarafından kontrol edilen açık kişi sıralaması (ör. yıldızlı kişiler) aynı kalır.)
Bu değişiklikleri uygulamak için aşağıdakilerden birini yapın:
- En yeni Contacts Provider'ı kullanın.
- Sürümü güncelleyin (çatallanmış bir sürüm kullanıyorsanız).
Ayrıca, desteği sonlandırılan Kişi Sağlayıcı özelliklerini kullanan tüm uygulamaları güncelleyin. Desteği sonlandırılan işlevlere geçici çözüm olarak tasarlanmış API sürümlerine izin verilmez.
Android 9 ve önceki sürümlerde, Kişi Sağlayıcı'daki kişi etkileşimi verileri kaldırılmamıştır. Bunun yerine, Android 10'daki eşdeğeri taklit etmek için kişi etkileşimi verileri düzenli olarak (yaklaşık olarak günde bir kez) silinir. Kişiler Sağlayıcısı bu bilgileri depolar ancak yalnızca geçici olarak.
API değişiklikleri
Bu değişikliklerin API'leri önemli ölçüde etkileyeceği tahmin edilmektedir. Örneğin, otomatik tamamlama sıralaması o kadar iyi performans göstermez. API davranışı üzerindeki olası etkiler şunlardır:
- Kişi Sağlayıcı, kullanıcının kişiyle ilgili tercihlerini veya etkileşimlerini
ContactsContract.Contactstablo sütunlarında saklamaz. - Otomatik tamamlama API'si, sonuçları etkileşim sayacına göre sıralamaz.
TIMES_CONTACTED/TIMES_USEDveLAST_TIME_CONTACTED/LAST_TIME_USEDsütunları güncellenmez.- Bu değerler, Android 10'a yükseltildikten sonra temizlenir (etkilenen sütunlara bağlı olarak
nullveya 0 olarak ayarlanır). - Otomatik tamamlama sorgu API'lerindeki sıralama, sonuçları hiçbir zaman yakınlık bilgilerine göre değil, alfabetik olarak döndürür.
- Sık iletişim kurulan kullanıcılar için API çağrıları (ör.
CONTENT_FREQUENT_URIfiltre dizesi kullanılarak) sonuç döndürmez.
Desteği sonlandırılan Kişi Sağlayıcı API öğelerinden herhangi biri sayaç kullanıyorsa bu sayaçlar (Android 10'da kullanıldığında) 0 değerini 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ının desteği sonlandırıldığı için bu sınıfa yönelik güncelleme ve silme çağrıları yoksayılır.
API'leri etkileyen alanlar
Android 10'da aşağıdaki alanlar değişti:
ContactsContract.ContactOptionsColumns#TIMES_CONTACTEDContactsContract.ContractOptionsColumns.LAST_TIME_CONTACTEDContactsContract.DataUsageStatColumns#TIMES_USEDContactsContract.DataUsageStatColumns#LAST_TIME_USEDContactsContract#CONTENT_STREQUENT_FILTER_URIContactsContract.Contacts#CONTENT_STREQUENT_URIContactsContract.Contacts#CONTENT_FREQUENT_URIContactsContract.Contacts#ENTERPRISE_CONTENT_FILTER_URIContactsContract.Contacts#CONTENT_FILTER_URI
Android 10'da etkilenen alanlar, aşağıdaki tabloda belirtildiği gibi farklı API'lerde bulunabilir. Desteği sonlandırılmış API alanları, listelenen davranışlarla döndürülür. Desteği sonlandırılan bu alanlardan biri API'lerinizden birkaçında kullanılabileceğinden kullanım alanlarınızı doğrulayın.
| Sınıf | API alanları | 10 iade |
|---|---|---|
ContactsContract.ContactsContactsContract.RawContactsContactsContract.DataContactsContract.Entity
|
ContactOptionsColumnsTIMES_CONTACTEDLAST_TIME_CONTACTED
|
Bu sütunlar, nasıl kullanıldıklarından bağımsız olarak her zaman 0 değerini içerir. Bu değerleri 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_URICONTENT_STREQUENT_URICONTENT_FREQUENT_URI
|
Yalnızca yıldız işaretli kişileri döndürür. Sık görüşülen kişi döndürülmedi. |
ContactsContract.CommonDataKinds.EmailContactsContract.CommonDataKinds.PhoneContactsContract.CommonDataKinds.Callable
|
Filtre (otomatik tamamlama olarak da bilinir) API'leri
|
Sonuçlar yakınlığa göre sıralanmamıştır. Bu öğeler öne çıkan ve ada göre sıralanır. |
Alternatifler
Desteği sonlandırılan API alanlarının alternatifi yoktur. Yeni API'ler veya yeni alanlar şeklinde bu kısıtlamaları atlatmayı amaçlayan geçici çözümlere izin verilmez.
Uygulama
Bu değişiklikleri uygulamak için herhangi bir işlem yapmanız gerekmez. Bu API'ler, Android OS platformunda kullanıcı gizliliğini artırma girişiminin bir parçasıdır. Ancak uygulamalarınız desteği sonlandırılan özelliklerden yararlanıyorsa değişiklikleri telafi etmek için uygulamalarınızı güncelleyebilirsiniz. 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şi yakınlık bilgileriyle ilgili değişiklikleri özelleştirmeyin veya bu değişiklikleri atlatmaya çalışmayın. Bu politikalar çerçeveye yerleştirilmiştir ve politikalarda değişiklik yapmak uyumluluğunuzu bozar. Varsayılan ayarları hiçbir zaman değiştirmeyin veya arka kapı alternatifleri sunmayın.