android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码。

主要就是实时获取短信信息。

android上获取短信信息主要有BroadcastReceiver方式与数据库方式,要实时的话就BroadcastReceiver比较方便,分享一篇文章大家可以查看一下,点击。

public class SMSReceiver extends BroadcastReceiver{

private String verifyCode="";

public static final String TAG = "SMSReceiver";

public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";

@Override

public void onReceive(Context context, Intent intent){

if (intent.getAction().equals(SMS_RECEIVED_ACTION)){

SmsMessage[] messages = getMessagesFromIntent(intent);

for (SmsMessage message : messages){

Log.i(TAG, message.getOriginatingAddress() + " : " +

message.getDisplayOriginatingAddress() + " : " +

message.getDisplayMessageBody() + " : " +

message.getTimestampMillis());

String smsContent=message.getDisplayMessageBody();

Log.i(TAG, smsContent);

writeFile(smsContent);//将短信内容写入SD卡

}

}

}

public final SmsMessage[] getMessagesFromIntent(Intent intent){

Object[] messages = (Object[]) intent.getSerializableExtra("pdus");

byte[][] pduObjs = new byte[messages.length][];

for (int i = 0; i < messages.length; i++)

{

pduObjs[i] = (byte[]) messages[i];

}

byte[][] pdus = new byte[pduObjs.length][];

int pduCount = pdus.length;

SmsMessage[] msgs = new SmsMessage[pduCount];

for (int i = 0; i < pduCount; i++) {

pdus[i] = pduObjs[i];

msgs[i] = SmsMessage.createFromPdu(pdus[i]);

}

return msgs;

}

//将短信内容写到SD卡上的文件里,便于将文件pull到PC,这样可方便其它如WWW/WAP平台的自动化

@SuppressLint("SdCardPath")

public void writeFile(String str){

String filePath="/mnt/sdcard/verifyCode.txt";

byte [] bytes = str.getBytes();

try{

File file=new File(filePath);

file.createNewFile();

FileOutputStream fos=new FileOutputStream(file);

fos.write(bytes);

fos.close();

}catch(IOException e){

e.printStackTrace();

}

}

如此当有短信收到时就可以将短信内容写到SD卡中的文件里

在另一个java类中写个读取文件内容的方法,并在写测试用例过程中,将得到的String按验证码的具体位置截取即可。

public String read(String str) throws IOException{

File file=new File(str);

FileInputStream fis=new FileInputStream(file);

StringBuffer sb=new StringBuffer();

BufferedInputStream bis=new BufferedInputStream(fis);

BufferedReader read = new BufferedReader (new InputStreamReader(bis));

int c=0;

while ((c=read.read())!=-1) {

sb.append((char) c);

}

read.close();

bis.close();

fis.close();

Log.i(TAG, sb.toString());

String verify=sb.toString();

return verify;

}

最后需要在manifest中增加申明,且注册权限

测试过程中需要用到短信验证码时就可以实时获取了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android短信验证码登录,Android注册登录实时自动获取短信验证码相关推荐

  1. autojs自动获取短信验证码

    AutoJS 是一种基于 JavaScript 的自动化脚本语言,可以用于在 Android 设备上自动化操作. 如果你想使用 AutoJS 自动获取短信验证码,你可以使用 Android 的短信 A ...

  2. Android短信验证(手机号注册,绑定手机号获取验证码)实例

    今天写一个常见的功能--手机app中注册或绑定手机号的获取验证码的功能.也就是短信验证功能 具体效果就是,你在注册界面填写手机号,点击获取验证码按钮,---然后会收到验证短信,填入验证码后点击注册 ...

  3. springboot+springsecurity+阿里云短信服务验证实现注册登录

    使用springboot+security+Aliyun短信服务实现注册登录 为了实现个人博客部分的登录注册,我采用了阿里云短信服务发送验证码,后端比对验证码的方式完成注册,现在功能还不完全,以后这个 ...

  4. android 自动获取短信验证码

     很多项目中都会用到,自动获取验证码填到输入框,这样用户体验比较好,废话不多说,现在实现 用的是ContentObserver这个类,帮助我们来监听短信数据库发生的变化 package com.s ...

  5. android 自动获取短信,安卓app怎样获取短信验证码自动输入

    这个你要自己写吗? 我建议你直接调用短信平台的接口不就可以了吗? 短信发送 //接口地址 String url = "http://183.203.28.5:9000/HttpSmsMt&q ...

  6. 短信验证(手机号注册,绑定手机号获取验证码)

    今天写一个常见的功能--手机app中注册或绑定手机号的获取验证码的功能.也就是短信验证功能 具体效果就是,你在注册界面填写手机号,点击获取验证码按钮,---然后会收到验证短信,填入验证码后点击注册按钮 ...

  7. IOS自动获取短信验证码

    小编这里有个自己的学习交流群681+503+716(验证编号:大鲨) * 1.自定义监听类* /** * 短信**,用于自动填充验证码 */ public class SMSContentObserv ...

  8. uni-app注册自动获取短信信息

    uni-app实现app发送短信和读取短信 1.发送短信 uni-app没有对应API的接口,如果想实现发送短信的功能可以借助HTML5+ API的方式,使用发送短信接口,直接跳转到手机发送短信页面, ...

  9. Python自动获取Redi缓存验证码

    最近做UI自动化测试,登录是需要进行短信验证码验证,和开发聊了聊思路,就开始着手实施 打开cmd 安装redis库 pip install redis 安装完成后,开始写代码,因为是测试环境,Redi ...

  10. python短信验证码登录_玩转python之获取短信验证码

    对于初学者,如何利用第三方python开发包发送短信验证码,下面是具体的实现和记录过程! 环境:虚拟机上centos7平台,python3.7版本: 第三方短信平台:榛子云短信(http://smso ...

最新文章

  1. textlive在安装完winedt的配置问题
  2. GaussianBlur函数
  3. spring-声明式事务管理
  4. java图形化界面设置焦点_如何在更新窗口时防止Java图形程序窃取焦点?
  5. 图标截取——背景偏移量技术
  6. c#提交事务的两种方法
  7. html流星雨代码_HTML制作流星雨特效
  8. 第五周课程总结与报告
  9. thinkphp5---join联合查询
  10. 元气骑士机器人的成就皮肤_元气骑士:5把特殊“红武”,想要机器人的皮肤,用它就对了!...
  11. 使用ExtendSim进行医疗仿真
  12. 5号字对应的数字字号_字号对照表
  13. 用手机打开word图表位置很乱_干货 | 论文格式调半天?Word攻略帮你统统都搞定...
  14. 基于达索系统3DE平台实现企业数字化转型的场景应用
  15. 功能模块图、业务流程图、处理流程图、ER图,数据库表图(概念模型和物理模型)画法...
  16. 数据分析师前景如何,需要学习什么技能?
  17. 深入HotSpot虚拟机源码探究synchronized底层实现原理【万字总结synchronized】
  18. golang switch灵活写法
  19. 【2022.1.3】手脱压缩壳练习(含练习exe)
  20. (转) Windows如何区分鼠标双击和两次单击

热门文章

  1. 独家深挖!F1赛车协会“刹车表现”是如何进行数据分析的?
  2. win7命令行打开计算机,Win7怎么打开cmd命令提示符_Win7打开命令提示符教程-192路由网...
  3. 2016 新学++ , 回顾过去展望未来
  4. 游标CURSOR的基本用法
  5. IBM 架构师为何以及如何成为了架构师
  6. 【win10】win10开机黑屏时间长或只有鼠标解决办法,亲测可用
  7. 按字母排列的中国城市名称大全
  8. 富文本编辑器ueditor——找不到ueditor.all.js以及ueditor.all.min.js文件
  9. html id命名规范,关于Html class id 命名规范
  10. 电瓶升级问题:在本节最后一个electric_car.py版本中,给Battery类添加一个名为upgrade_battery()的方法。这个方法检查电瓶容量,如果它不是85,就将它设置为85。