如何让我的应用自动填写短信验证码?
问题分享
华为开发者论坛上有开发者向我们咨询:想要实现应用自动填写短信验证码,但如果将手机短信"验证码保护"功能打开,app就不能自动填写验证码,有没有什么方法能获取到短信验证码?问题链接:
https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202342491084740374&fid=18?ha_source=hms1
我们知道,华为对隐私保护高度重视,用户的隐私安全一直是华为的首要关注。为了保护用户的支付安全和帐号安全,华为EMUI系统提供了验证码短信的保护功能,该功能可以阻止第三方应用获取用户收到的验证码短信。那么正如开发者提问的那样,开启短信验证码保护后app不能自动填写验证码,华为有没有提供什么方法在开启短信验证码保护的状态下,仍然可以自动获取到验证码并自动填写的呢?
解决方案
华为帐号服务(HUAWEI Account Kit)为开发者提供了一项短信自动读取能力,可以帮助应用自动读取验证码,实现应用自动或者被授权读取短信验证码,提高验证效率,优化用户体验。
以下是短信自动读取能力的一种场景:
如果应用需要用户输入手机号并通过短信验证码核实用户身份,可以通过集成ReadSmsManager服务,使应用在无需申请短信读取权限的前提下,具备自动读取针对该应用的短信验证码的能力。用户在验证过程中可以省去手动输入短信验证码的操作,整个获取短信验证码的流程可简化成:用户点击获取验证码→收到短信→自动填充→用户点击,将会更加优化用户体验。
自动读取短信验证码功能关键开发操作指导
1.应用调用ReadSmsManager.start(Activity activity)方法请求开启短信读取服务。
Task<Void> task = ReadSmsManager.start(MainActivity.this);
task.addOnCompleteListener(new OnCompleteListener<Void>() {@Overridepublic void onComplete(Task<Void> task) {if (task.isSuccessful()) {// 开启服务成功,可以继续后续流程doSomethingWhenTaskSuccess();}}
});
2. 应用客户端将手机号发送给应用服务器,应用服务器生成一条验证消息,并通过SMS将其发送到用户的手机号。此部分由开发者自行完成。
3. 当用户的设备接收到验证消息时,HMS Core(APK)会显式地向应用客户端发送广播,intent里面包含消息的文本。应用客户端可以使用广播接收此验证消息。应用客户端读取到验证消息的文本后,可以使用正则表达式或其他逻辑从消息中获得验证码,验证码的格式由应用客户端和服务器自行定义。
public class MySMSBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Bundle bundle = intent.getExtras();if (bundle != null && ReadSmsConstant.READ_SMS_BROADCAST_ACTION.equals(intent.getAction())) {Status status = bundle.getParcelable(ReadSmsConstant.EXTRA_STATUS);if (status.getStatusCode() == CommonStatusCodes.TIMEOUT) {// 服务已经超时,未读取到符合要求的短信,服务关闭doSomethingWhenTimeOut();} else if (status.getStatusCode() == CommonStatusCodes.SUCCESS) {if (bundle.containsKey(ReadSmsConstant.EXTRA_SMS_MESSAGE)) {// 服务读取到了符合要求的短信,服务关闭doSomethingWhenGetMessage(bundle.getString(ReadSmsConstant.EXTRA_SMS_MESSAGE));}}}}
}
除了以上自动读取短信验证码能力以外,华为帐号服务还提供了授权读取短信验证码的能力,使应用在无需申请短信读取权限的前提下,可以通过用户授权方式来自动获取针对应用的短信验证码。用户在验证过程中可以省去手动输入短信验证码的操作,优化用户体验。
欲了解更多详情,请参阅:
>>华为账号服务官网
>>自动读取短信验证码开发指导文档
>>授权读取短信验证码开发指导文档
华为账号服务开源仓库地址:GitHub、Gitee
>>访问华为开发者联盟官网,了解更多相关内容
>>获取开发指导文档
>>华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解华为移动服务最新技术资讯~
如何让我的应用自动填写短信验证码?相关推荐
- android短信接收器的实现,可以实现自动填写短信验证码功能
项目介绍 项目地址: SmsObserverForAndroid 介绍 这是一个用于拦截android实时短信的库,可以进行短信过滤,得到自己想要的内容,可以用于需要自动填写短信验证码的app项目 功 ...
- 自动填充短信验证码实现方式
自动填充短信验证码 短信验证码是大部分软件里面都存在的功能,同时为了避免用户自己输入导致的繁琐操作,有一部分app设计者将其设置成了自动填充的方式,方便用户操作那么这种方式是什么实现的呢. 利用广播接 ...
- autojs自动获取短信验证码
AutoJS 是一种基于 JavaScript 的自动化脚本语言,可以用于在 Android 设备上自动化操作. 如果你想使用 AutoJS 自动获取短信验证码,你可以使用 Android 的短信 A ...
- web: 手机键盘自动获取短信验证码,点击自动填充输入框
一.展示效果: IOS手机: autocomplete="one-time-code" <van-field:class="$style.code"v-m ...
- Android自动填充短信验证码
自动拦截短信实际上就是在系统注册一个BroadcastReceiver,然后通过设置拦截短信的: filter.addAction("android.provider.Telephony.S ...
- android 自动获取短信验证码
很多项目中都会用到,自动获取验证码填到输入框,这样用户体验比较好,废话不多说,现在实现 用的是ContentObserver这个类,帮助我们来监听短信数据库发生的变化 package com.s ...
- IOS自动获取短信验证码
小编这里有个自己的学习交流群681+503+716(验证编号:大鲨) * 1.自定义监听类* /** * 短信**,用于自动填充验证码 */ public class SMSContentObserv ...
- Android自动获取短信验证码
一.工具封装 public class GetCodeUtil extends ContentObserver {public static final String SMS_URI_INBOX = ...
- android 短信验证码自动填写的二种方法
转载自:https://blog.csdn.net/VirusDerekRuler/article/details/78506522 现在开发越来越注重用户体验了,现今Android基本都有短信验证功 ...
最新文章
- linux下使用NetBeans调试libevent库
- LeetCode实战:最小栈
- python字典练习题
- 2017qcon大会的一点想法(安全人才如何不被淘汰?)
- linux 32库路径,linux – 共享库如何在64位/ 32位混合系统中工作?
- 跟着感觉走,不要冲动入手,到真正低点在入手
- 数学公式编辑器 linux,linux下的公式编辑器
- 剑指offer-数组中的重复的数字-p39
- java实现回文验证_LeetCode 精选 TOP 面试题(Java 实现)—— 验证回文串
- android压缩图片质量,Android 图片质量压缩有关问题
- Metapath2vec:Scalable Representation Learning for Heterogeneous Networks(结构化深度网络特征表示)
- access 的几种更新语句:update where 与 update join where
- Ray Dalio:经济机器是怎样运行的 (时长30分钟)
- openjudge 1.5.21 角谷猜想
- 半年经验Java面试准备
- java 骑士飞行棋_C#实现骑士飞行棋
- NodeJs - for循环的几种遍历方式
- macbook pro的漏电
- 赋能集团带您了解,广告联盟的发展历程,前世和今生
- html段落格式设置