Şifre yöneticileri gibi bazı uygulamalar, diğer uygulamalardaki bileşenleri kullanıcı tarafından sağlanan verilerle doldurabilir. Diğer uygulamaların bileşenlerini dolduran uygulamalara otomatik doldurma hizmetleri denir. Otomatik doldurma çerçevesi, bir uygulama ile otomatik doldurma hizmeti arasındaki iletişimi yönetir.
Kimlik bilgilerini ve formları doldurmak zaman alıcı ve hata yapmaya açık bir iştir. Otomatik doldurma, kullanıcıların alanları doldurmak için harcadığı zamandan tasarruf etmesine olanak tanır ve kullanıcı giriş hatalarını en aza indirir.
Yalnızca birkaç satır kodla, Oluştur'a Otomatik Doldurma özelliğini uygulayabilirsiniz. Bu özellik kullanıcılara aşağıdaki avantajları sağlar:
Kimlik bilgilerini doldurma
Otomatik doldurma özelliği, kullanıcıların kimlik bilgilerini aşağıdaki şekillerde doldurmasına olanak tanır:
- Sistem, kullanıcı otomatik doldurma semantiklerinin ayarlandığı bir alana dokunduğunda kullanıcıya otomatik doldurma önerileri gösterir.
- Sistem, kullanıcıya otomatik doldurma önerileri gösterir ve bunları kullanıcının yazdığına göre filtreler.
Kimlik bilgisini kaydet
Kullanıcılar, kimlik bilgilerini Otomatik Doldurma özelliğiyle aşağıdaki yöntemlerle kaydedebilir:
- Sistem, otomatik doldurma özelliği etkin bir alana yeni veya güncellenmiş bilgiler girdiğinde kullanıcıdan bilgileri kaydetmesini isteyen bir kayıt iletişim kutusu tetikler.
Kaydetme işlemi iki şekilde yapılabilir:
- Açık bir şekilde, bilgileri göndererek (ör. bir düğme tıklaması aracılığıyla)
- Kullanıcı sayfadan ayrıldığında dolaylı olarak
- Kimlik bilgisi sağlayıcınıza bağlı olarak, bir alanda
ContentType.NewPassword
ayarlandığında sistem kullanıcıya güçlü bir şifre önerebilir.
Kullanıcılar için kayıtlı verilerin alınmasını kolaylaştırmak amacıyla uygulamanızda Otomatik Doldurma'yı kullanabilirsiniz. Otomatik doldurma, BasicTextField
ve bu bileşeni temel alan tüm Material metin alanlarını kullanarak metin bileşenlerini destekler.
Otomatik doldurma ayarla
Cihazınızda veya emülatörünüzde Otomatik Doldur API'lerini kullanmadan önce Ayarlar'da Otomatik Doldur'u etkinleştirmeniz gerekir. Burada, kimlik bilgilerinizi Otomatik Doldurma'nın saklaması için bir kimlik bilgisi sağlayıcı belirtebilirsiniz.
İçerik türünü kullanarak metin alanınıza Otomatik Doldur özelliğini ekleme
Bir TextField
alanının otomatik doldurma özelliğinin etkin olduğunu belirtmek için ContentType
semantiklerini alanın kabul edebileceği türlerle ayarlayın. Bu, Otomatik Doldurma hizmetlerine bu belirli alanla alakalı olabilecek kullanıcı verisi türlerini belirtir. Kullanıcıların kullanıcı adlarıyla doldurabileceği bir TextField
ayarlamak için ContentType.Username
öğesini kullanın.
TextField( value = textFieldValue.value, onValueChange = {textFieldValue.value = it}, modifier = Modifier.semantics { contentType = ContentType.Username } )
ContentType
semantiklerini ayarlayarak kullanıcılarınız, cihazlarının kimlik bilgisi sağlayıcısına önceden kaydedilmiş otomatik doldurma bilgilerine erişebilir. Örneğin, bir kullanıcı dizüstü bilgisayarındaki Chrome tarayıcı üzerinden uygulamanızda oturum açtıysa ve şifresini bir kimlik bilgisi sağlayıcısı aracılığıyla kaydettiyse kimlik bilgileri Otomatik Doldurma aracılığıyla sunulur.
Birden çok türde Otomatik Tamamlama alanı ekleme
Bazı durumlarda TextField
'ün birden fazla ContentType
üstlenmesini isteyebilirsiniz. Örneğin, bir giriş alanı e-posta adresini veya kullanıcı adını kabul edebilir. +
operatörünü kullanarak TextField
öğenize birden fazla içerik türü ekleyebilirsiniz.
TextField( value = textFieldValue.value, onValueChange = { textFieldValue.value = it }, modifier = Modifier.semantics { contentType = ContentType.Username + ContentType.EmailAddress } )
Otomatik doldurma ile kaydedilebilecek tüm veri türleri için ContentType
referansına bakın.
Otomatik doldurma ile verileri doldurma
Bir TextField
alanına ContentType
eklediğinizde, kullanıcıların kimlik bilgilerini doldurabilmesi için başka bir işlem yapmanız gerekmez.
Kullanıcı, otomatik doldurma özelliği etkin bir alanı tıkladığında, depolanmış alakalı veriler varsa klavyenin üzerindeki araç çubuğunda kimlik bilgilerini doldurmasını isteyen bir çip görür.
Navigasyon üzerinden Otomatik Doldurma ile veri tasarrufu
Oluştur, kullanıcının bir sayfadan ne zaman ayrıldığını otomatik olarak belirlemeye çalışır ve girilen kimlik bilgilerini kaydeder. Otomatik doldurma özelliği etkinleştirilen bir alan, kullanıcı sayfadan çıktığında ek kod gerektirmeden kimlik bilgisini otomatik olarak kaydeder.
Otomatik doldurma ile verileri açıkça kaydetme
Otomatik doldurma özelliğini kullanarak metin alanları aracılığıyla yeni kimlik bilgilerini açıkça kaydetmek için otomatik doldurma yöneticisi tarafından otomatik doldurma bağlamı bağlanmalıdır (veya iptal edilmelidir). Yerel Otomatik Doldurma yöneticisi, gerektiğinde Otomatik Doldurma çerçevesiyle iletişim kurar. Kullanıcının girdiği kimlik bilgilerini kaldırmak istiyorsanız bekleyen verileri kaydetmeden silmek için AutofillManager.cancel işlevini çağırın.
Aşağıdaki snippet'lerde, Otomatik Doldurma ile verileri bir düğme kullanarak açıkça nasıl kaydedeceğiniz gösterilmektedir:
Otomatik doldurma yöneticisini barındıracak bir yerel değişken oluşturun. Bu değişken aşağıdaki şekilde alınabilir:
val autofillManager = LocalAutofillManager.current
TextField(s)
hesabınızda,Modifier.semantics
üzerinden istediğiniz içerik türünü ekleyin:val autofillManager = LocalAutofillManager.current Column { TextField( value = textFieldValue.value, onValueChange = { textFieldValue.value = it }, modifier = Modifier.semantics { contentType = ContentType.NewUsername } ) Spacer(modifier = Modifier.height(16.dp)) TextField( value = textFieldValue.value, onValueChange = { textFieldValue.value = it }, modifier = Modifier.semantics { contentType = ContentType.NewPassword } ) }
Otomatik doldurma bağlamını düğme tıklaması ile gerektiği gibi gönderin:
val autofillManager = LocalAutofillManager.current Column { TextField( value = textFieldValue.value, onValueChange = { textFieldValue.value = it }, modifier = Modifier.semantics { contentType = ContentType.NewUsername }, ) Spacer(modifier = Modifier.height(16.dp)) TextField( value = textFieldValue.value, onValueChange = { textFieldValue.value = it }, modifier = Modifier.semantics { contentType = ContentType.NewPassword }, ) // Submit button Button(onClick = { autofillManager?.commit() }) { Text("Reset credentials") } }
Commit, kullanıcı ekrandan uzaklaştığında çağrılır. Gezinme menüsüne bir Gönder düğmesi bağlıysa Taahhüt et işlevinin çağrılmasına gerek yoktur. Yine de kaydetme iletişim kutusunu tetiklemek için bir Gönder düğmesi tıklamak istiyorsanız buraya Taahhüt et'i ekleyin.
Kullanıcı düğmeyi tıkladığında, kimlik bilgilerini seçili kimlik bilgisi sağlayıcıya kaydetmelerini isteyen aşağıdaki sayfayı görür:
Güçlü şifre önerisi ile Otomatik Doldurma özelliğini kullanarak veri tasarrufu
Kimlik bilgisi sağlayıcınıza bağlı olarak, NewUsername
ve NewPassword
içerik türlerini kullandığınızda kullanıcılar klavyede Güçlü şifre önerin düğmesini görebilir. Kullanıcılar bu düğmeyi tıkladığında, kimlik bilgilerini kaydedebilecekleri bir alt sayfa gösterilir. Kullanıcıların bu deneyimi yaşaması için başka bir şey uygulamanız gerekmez.
Sorun giderme
"Kayıt" kullanıcı yolculuğunu çağırırken "Şimdi değil"i birden fazla kez tıklarsanız kimlik bilgisi sağlayıcınız alt sayfayı artık göstermeyebilir. Bu seçeneği yeniden etkinleştirmek ve tekrar göstermek için "Bu şifreyi hatırla" seçeneğini engelleyen belirli uygulamaları kaldırmanız gerekir.
Otomatik doldurmayı daha da özelleştirme
Tipik bir Otomatik Doldurma kullanıcı yolculuğunda, Otomatik Doldurma özellikli bir bileşen kimlik bilgileriyle doldurulduğunda, Otomatik Doldurma'nın başarıyla tamamlandığını kullanıcıya bildirmek için bileşenin rengi değişir ve bileşen vurgulanır.
Bu vurgu rengini özelleştirmek için CompositionLocal
simgesini kullanın ve istediğiniz rengi belirtin.
val customHighlightColor = Color.Red CompositionLocalProvider(LocalAutofillHighlightColor provides customHighlightColor) { TextField( value = textFieldValue.value, onValueChange = { textFieldValue.value = it }, modifier = Modifier.semantics { contentType = ContentType.Username } ) }
Varsayılan otomatik doldurma vurgu rengi Color(0x4dffeb3b)
olarak tanımlanır.