Android 自动填充电话号码未出现,仅显示“密码”

问题描述

我正在尝试在 EditText 字段中利用 Android 的自动填充功能,向用户提供使用与键盘顶部的设备/帐户关联的电话号码的建议,如下图所示。

我尝试将 android:autofillHints="phone"android:autofillHints="phoneNumber" 添加到布局的 xml 文件中。这两个选项都导致出现此“密码”按钮的左侧屏幕截图。 (我也在实际设备而不是模拟器上测试了这段代码

要查看我是否没有正确使用自动填充,或者这是否是设备/帐户问题,我尝试将代码更改为 android:autofillHints="emailAddress"。这导致了正确的屏幕截图,其中显示了帐户的电子邮件地址(出于隐私目的而进行了编辑)。这让我相信我的帐户中可能没有保存电话号码或其他东西,这就是它认为“密码”的原因。

我的问题是:

  1. 为什么会出现这个“密码”字段?
  2. 如果用户的帐户中没有电话号码,我该如何隐藏“密码”字段? (如果这是原因)
  3. 有没有更好的方法来做到这一点?

任何帮助将不胜感激。

Autofill Results

这里是编辑文本的xml代码

<EditText
    android:id="@+id/appt_type_phone_number_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:autofillHints="phone"
    android:importantForAutofill="yes"
    android:background="@android:color/transparent"
    android:ems="10"
    android:hint="@string/enter_phone_number"
    android:inputType="phone"
    android:maxLength="16"
    android:textSize="14sp"
    android:padding="16dp"
    tools:targetApi="O"
    />

解决方法

  1. 这取决于您的自动填充服务为您的应用提供了什么。

  2. & 3. 您可以通过编程方式设置自动填充提示。

     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         binding = ActivityMainBinding.inflate(layoutInflater)
         setContentView(binding.root)
         binding.appt_type_phone_number_text.setAutofillHints(View.AUTOFILL_HINT_PHONE) }
    

参考:Optimize your app for autofill