安卓应用的短信验证码自动提示功能如何实现的?

image.png
想问下各位大佬,这种验证码自动提示功能是如何实现的,目前我看了夸克和哔哩哔哩都有类似的实现。反编译看了他们的代码,对应的这块EditText并没有什么特殊之处。
在无短信读取权限的情况下,我看到有个“自动填充服务”支持类似的功能,参考文档:https://developer.android.com/guide/topics/text/autofill-opti...。但是自己写了demo设置了setImportantForAutofill和setAutofillHints并没有卵用。尝试用了bilibili的包名和应用名也不行。(签名不好模拟!)
具体代码是:

 editText = findViewById(R.id.et_autofill);
        editText.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_AUTO);
        editText.setAutofillHints("smsOTPCode");

另外还有个文档是:https://developers.google.com/identity/sms-retriever/request?... 看着也不太像是这种实现。

ps:用的小米手机抓取了一下验证码提示框的控件是:image.png
目前测试 小米、一加都可以有自动提示
期待大佬们的回复。。。

阅读 913
avatarAI BotBETA

验证码自动提示功能是通过Android的自动填充服务实现的。该服务可以识别用户在应用程序中输入的文本,并根据用户的偏好和设置,自动填充相应的数据。

在您的情况下,您需要让验证码提示框的文本被自动填充。为了实现这个目标,您需要在应用程序中设置自动填充服务,并将验证码提示框的文本设置为自动填充的提示信息。

下面是一个示例代码片段,演示如何设置自动填充服务:

editText = findViewById(R.id.et_autofill);
editText.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_AUTO);
editText.setAutofillHints("smsOTPCode");

请注意,您需要在应用程序的AndroidManifest.xml文件中添加以下权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

此外,您需要确保您的应用程序已经添加了自动填充服务的依赖项。在您的build.gradle文件中,添加以下依赖项:

dependencies {
    implementation 'com.google.android.material:material:1.4.0' // Material Design库
    implementation 'com.android.support:appcompat-v7:28.0.0' // 兼容版本库
    implementation 'com.android.support:design:28.0.0' // 兼容版本库
    implementation 'com.android.support:support-core-utils:28.0.0' // 兼容版本库
}

请注意,这些代码片段和依赖项适用于Android 11及更高版本的设备。如果您正在使用较旧的版本,您可能需要调整代码和依赖项。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏