android注册发送短信验证码并自动获取短信,截取数字验证码填充文本框。
一.接入短信平台
首先需要选择短信平台接入,这里使用的是榛子云短信平台(),
两分钟申请测试账号,赠送了100条测试短信。
android使用java的jar包即可开发
jar下载:
API文档:
使用测试账号登录管理后台获取appId、appSecret, 地址:
在"我的应用"->"详情"中打开:
1.安装下载后的SDK只包含一个jar文件,并且不依赖任何其他jar包或文件,直接导入到工程中即可使用。
2.用法使用事先申请的AppId、AppSecret初始化ZhenziSmsClient:
ZhenziSmsClient client = new ZhenziSmsClient(appId, appSecret); AppId、AppSecret是短信平台分配的 1)发送短信 String result = client.send("15811111111", "您的验证码为4534,有效时间为5分钟");send方法用于单条发送短信
参数1:接收者手机号码,参数2:短信内容
返回结果是json格式的字符串, code: 发送状态,0为成功。非0为发送失败,可从data中查看错误信息
{ "code":0, "data":"发送成功" }二. 自动获取验证码
大致思路 需要做以下几步:
获取短信内容
判断短信中是否含有验证码,如果有则提取出来,如果没有就告知用户没有匹配出短信验证码
将匹配出的短信验证码填充到文本框中
开始制作
1.)申请短信权限
<uses-permission android:name="android.permission.RECEIVE_SMS" /> <!-- 接收短信权限 --> <uses-permission android:name="android.permission.READ_SMS" /> <!-- 读取短信权限 -->注意!!!
由于Google在Android6.0引入了运行时权限,使得只要API版本大于23的都需要进行权限的申请,在这里推荐使用一个非常简单快速的第三方库来进行运行时权限的申请,Android 6.0运行时权限第三方库的使用—–RxPermissions
2.)注册短信接收者
我们知道,每当系统接收到一条短信便会发出一条广播,
为此,我们首先需要做的就是配置一个广播接收者来响应这条广播
AndroidManifest.xml文件中配置短信接受者:
<receiver android:name=".SMSReceiver"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>注意设置此广播接收者的级别为最高(1000)
SMSReceiver.java
public class SMSReceiver extends BroadcastReceiver { private static final String TAG = "SMSReceiver"; @Override public void onReceive(Context context, Intent intent) { //进行获取短信的操作 getMsg(context, intent); } }3.)接下来进行短信内容的获取
private void getMsg(Context context, Intent intent) { //pdus短信单位pdu //解析短信内容 Object[] pdus = (Object[]) intent.getExtras().get("pdus"); assert pdus != null; for (Object pdu : pdus) { //封装短信参数的对象 SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdu); String number = sms.getOriginatingAddress(); String body = sms.getMessageBody(); //写自己的处理逻辑 //获取短信验证码 getCode(context, body); } }通过SmsMessage对象可以得到短信的发送号码,短信内容及相关信息。
匹配出验证码并复制到剪贴板