Android注册登录实时自动获取短信验证码

Android注册登录实时自动获取短信验证码,第1张

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

androID应用的自动化测试必然会涉及到@R_404_6810@功能,而许多的@R_404_6810@或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码。
主要就是实时获取短信信息。
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中增加申明,且注册权限

<receiver androID:name="com.cplatform.surfdesktop.test.util.SMSReceiver"> <intent-filter> <action androID:name="androID.provIDer.Telephony.SMS_RECEIVED" /> </intent-filter></receiver><uses-permission androID:name="androID.permission.RECEIVE_SMS"></uses-permission><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission androID:name="androID.permission.READ_SMS"/>

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

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

总结

以上是内存溢出为你收集整理的Android注册登录实时自动获取短信验证码全部内容,希望文章能够帮你解决Android注册登录实时自动获取短信验证码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1141553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存