android 自动获取短信验证码

转载 2015年07月07日 12:05:11
转载于:


http://www.cnblogs.com/top5/p/3421049.html

前言: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中增加申明,且注册权限
<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中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: ...
  • zzh1026
  • zzh1026
  • 2016年05月13日 15:49
  • 1838

android获取短信验证码并自动填写

参考资料如下,亲测很好用,哈哈: http://blog.csdn.net/kaloda2011/article/details/21032829代码如下: MainActivitypublic ...
  • jane1229
  • jane1229
  • 2016年09月12日 17:11
  • 3033

android自动获取短信验证码

好吧,标题党了~ 前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码。 主要就是实时获取短信...
  • hunterno4
  • hunterno4
  • 2013年08月11日 15:36
  • 26034

android仿淘宝,自动获取短信验证码 demo

  • 2014年05月13日 10:41
  • 1.36MB
  • 下载

android获取短信验证码并自动填写

参考资料如下,亲测很好用,哈哈: http://blog.csdn.net/kaloda2011/article/details/21032829代码如下: MainActivitypublic ...
  • jane1229
  • jane1229
  • 2016年09月12日 17:11
  • 3033

Android自动获取短信验证码

现在很多应用很多功能都需要通过发送短信验证码进行验证。然而每次读取短信还得退出应用进行读取会给用户造成一定的不便。因此让应用可以直接读取到短信验证码就很有必要。 刚好前些天在极客学院看到了一个关于自动...
  • dai_jiawei
  • dai_jiawei
  • 2015年10月26日 14:30
  • 1290

android获取短信验证码并自动填写的实现一

现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: ...
  • zzh1026
  • zzh1026
  • 2016年05月13日 15:49
  • 1838

Android获取短信验证码并自动填充的两种方式

有些项目为了方便客户操作,减去客户输入短信验证码的时间,会要求安卓app能够获取收到的短信验证码并自动填充到输入框。所以,我整理了安卓获取短信验证码并自动填充输入框的两种方法,而且正式在项目中使用并无...
  • dwj611
  • dwj611
  • 2017年04月13日 13:42
  • 1481

android自动获取短信验证码

好吧,标题党了~ 前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码。 主要就是实时...
  • yongzhen150
  • yongzhen150
  • 2014年05月19日 14:14
  • 685

android获取短信验证码并自动填写的实现

现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: ...
  • huluhong
  • huluhong
  • 2015年05月25日 15:52
  • 1910
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 自动获取短信验证码
举报原因:
原因补充:

(最多只允许输入30个字)