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. Değişiklikler aşağıdakileri içerir:
- 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
MultiAutoCompleteTextView
sı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 Kişi Sağlayıcı'yı kullanın.
- Sürümü güncelleyin (çatallanmış bir sürüm kullanıyorsanız).
Ayrıca, kullanımdan kaldırılan Kişi Sağlayıcı özelliklerini kullanan uygulamaları da güncelleyin. Desteği sonlandırılan işlevler için 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ılmadı. Bunun yerine, Android 10'daki eşdeğeri simüle etmek için kişi etkileşimi verileri düzenli olarak (günde yaklaşık bir kez) temizlenir. Kişiler Sağlayıcısı bu bilgileri saklar, ancak sadece geçici bir süre için geçerlidir.
API değişiklikleri
Bu değişikliklerin API'leri önemli ölçüde etkileyeceği beklenmektedir. Örneğin, otomatik tamamlama sıralaması 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.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üncellenmez.- Bu değerler, Android 10'a yükseltildikten sonra temizlenir (etkilenen sütunlara bağlı olarak
null
veya 0 olarak ayarlanır). - Otomatik tamamlama sorgu API'lerinde 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 kişiler için API çağrıları (ör.
CONTENT_FREQUENT_URI
filtre 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_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'da etkilenen alanlar, aşağıdaki tabloda belirtildiği gibi farklı API'lerde bulunabilir. Desteği sonlandırılan API alanları, listelendiği şekilde davranışları döndürü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.Contacts ContactsContract.RawContacts ContactsContract.Data ContactsContract.Entity
|
ContactOptionsColumns TIMES_CONTACTED LAST_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_URI CONTENT_STREQUENT_URI CONTENT_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.Email ContactsContract.CommonDataKinds.Phone ContactsContract.CommonDataKinds.Callable
|
Filtre (otomatik tamamlama olarak da bilinir) API'leri
|
Sonuçlar yakınlığa göre sıralanmaz. Bunlar yıldızlı ve ad ölçütlerine 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 girişim, Android OS platformunda kullanıcı gizliliğini artırma girişiminin bir parçası. 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şilerin 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 herhangi bir değişiklik yaptığınızda politikalara uygunluğunuzu kaybedersiniz. Varsayılan ayarları hiçbir zaman değiştirmeyin veya arka kapı alternatifleri sunmayın.