栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

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

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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中增加申明,且注册权限


 
 
 




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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/161939.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号