`
shuai1234
  • 浏览: 972131 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

android自动获取短信验证码

 
阅读更多

好吧,标题党了~

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

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

android上获取短信信息主要有BroadcastReceiver方式与数据库方式,要实时的话就BroadcastReceiver比较方便

 

[java] view plaincopy
 
  1. public class SMSReceiver extends BroadcastReceiver{  
  2.       private String verifyCode="";  
  3.     public static final String TAG = "SMSReceiver";  
  4.     public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";  
  5.     @Override  
  6.     public void onReceive(Context context, Intent intent){  
  7.        if (intent.getAction().equals(SMS_RECEIVED_ACTION)){  
  8.            SmsMessage[] messages = getMessagesFromIntent(intent);  
  9.            for (SmsMessage message : messages){  
  10.               Log.i(TAG, message.getOriginatingAddress() + " : " +  
  11.                   message.getDisplayOriginatingAddress() + " : " +  
  12.                   message.getDisplayMessageBody() + " : " +  
  13.                   message.getTimestampMillis());  
  14.               String smsContent=message.getDisplayMessageBody();  
  15.               Log.i(TAG, smsContent);                
  16.               writeFile(smsContent);//将短信内容写入SD卡  
  17.            }  
  18.        }  
  19.     }  
  20.   
  21.     public final SmsMessage[] getMessagesFromIntent(Intent intent){  
  22.         Object[] messages = (Object[]) intent.getSerializableExtra("pdus");  
  23.         byte[][] pduObjs = new byte[messages.length][];  
  24.         for (int i = 0; i < messages.length; i++)  
  25.         {  
  26.             pduObjs[i] = (byte[]) messages[i];  
  27.         }  
  28.         byte[][] pdus = new byte[pduObjs.length][];  
  29.         int pduCount = pdus.length;  
  30.         SmsMessage[] msgs = new SmsMessage[pduCount];  
  31.         for (int i = 0; i < pduCount; i++)        {  
  32.             pdus[i] = pduObjs[i];  
  33.             msgs[i] = SmsMessage.createFromPdu(pdus[i]);  
  34.         }  
  35.         return msgs;  
  36.     }  
  37.   //将短信内容写到SD卡上的文件里,便于将文件pull到PC,这样可方便其它如WWW/WAP平台的自动化    
  38.     @SuppressLint("SdCardPath")  
  39.     public void writeFile(String str){  
  40.         String filePath="/mnt/sdcard/verifyCode.txt";         
  41.         byte [] bytes = str.getBytes();  
  42.         try{  
  43.         File file=new File(filePath);  
  44.         file.createNewFile();  
  45.         FileOutputStream fos=new FileOutputStream(file);  
  46.         fos.write(bytes);  
  47.         fos.close();  
  48.         }catch(IOException e){  
  49.             e.printStackTrace();  
  50.         }         
  51.     }  

 

 

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

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

 

[java] view plaincopy
 
  1. public String read(String str) throws IOException{    
  2.         File file=new File(str);  
  3.         FileInputStream fis=new FileInputStream(file);  
  4.         StringBuffer sb=new StringBuffer();  
  5.           
  6.         BufferedInputStream bis=new BufferedInputStream(fis);  
  7.         BufferedReader  read = new BufferedReader (new InputStreamReader(bis));  
  8.         int c=0;  
  9.         while ((c=read.read())!=-1) {  
  10.             sb.append((char) c);  
  11.         }  
  12.         read.close();  
  13.         bis.close();  
  14.         fis.close();  
  15.         Log.i(TAG, sb.toString());        
  16.         String verify=sb.toString();          
  17.         return verify;  
  18.     }  

 

 

最后需要在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"/>

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

分享到:
评论

相关推荐

    自动获取短信验证码并填充

    在IT行业中,自动获取...总结来说,自动获取短信验证码并填充的技术流程涵盖了Android的广播接收器、数据解析、UI自动化控制等多个方面,需要综合运用多种技术手段,并且在实施过程中充分考虑用户隐私和系统兼容性。

    Android实现自动提取短信验证码功能

    本文实例讲解了Android自动提取短信验证码解决方案,分享给大家供大家参考,具体内容如下 主要功能及优点 1.收到验证码短信后,自动提取短信中的验证码填写到相应输入框 2.可指定一个号码,只读取与他有关短信,...

    自动获取短信验证码并填充以及倒计时

    在IT行业中,自动获取短信验证码并填充以及倒计时是一项常见的功能,特别是在用户注册、登录、支付等场景中。这个功能极大地提升了用户体验,减少了手动输入验证码的繁琐步骤,同时也为应用的安全性提供了一定保障。...

    Android自动填写短信验证码

    本Demo项目“Android自动填写短信验证码”提供了一种自动化处理验证码的解决方案,简化了用户操作流程,提升了用户体验。 首先,我们来理解验证码自动填充的基本原理。Android系统提供了Intent服务,用于在应用之间...

    android 自动填充短信验证码,实现 语音播报短信

    在Android开发中,自动填充短信验证码以及语音播报短信是提高用户体验的重要功能。这些技术主要涉及到以下几个方面的知识点: 1. **Android SMS Retriever API**: Android提供了SMS Retriever API,允许应用安全...

    android自动获取验证码

    本文将深入探讨如何在Android客户端实现自动获取验证码的技术细节。 首先,我们要明白自动获取验证码的核心原理是短信监听。Android系统提供了一个名为`BroadcastReceiver`的组件,我们可以创建一个自定义的`...

    android 获取短信的验证码

    当系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称“pdus”即可从Intent中获取短信内容。最好使用动态注册的方法,去注册...

    Android高级应用源码-android仿淘宝,自动获取短信验证码 demo.rar

    这个压缩包文件“Android高级应用源码-android仿淘宝,自动获取短信验证码 demo.rar”提供了一个Android应用程序的示例,该程序模拟了淘宝应用中的一个重要功能:自动获取短信验证码。这个功能在许多移动应用中用于...

    Android自动提取短信验证码

    在Android开发中,实现“自动...综上所述,实现“自动提取短信验证码”涉及到Android的广播接收器、短信权限、正则表达式、UI交互等多个知识点。通过合理的代码设计和优化,可以在保证功能的同时,提供良好的用户体验。

    android 短信验证码自动填充

    在Android开发中,实现短信验证码自动填充是一项提升用户体验的重要功能。这一特性允许应用程序在接收到短信验证码后,自动将其填入到相应的输入框中,从而减少用户手动输入的步骤,提高验证过程的效率。以下是对这...

    Android自动填充短信验证码.zip

    本资源“Android自动填充短信验证码.zip”包含了实现这一功能的相关代码,让我们来深入探讨一下这个功能的实现原理和关键知识点。 一、Android AutoFill框架 Android 8.0(API级别26)引入了AutoFill服务,这是一...

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

    【标题解析】:“android仿淘宝,自动获取短信验证码 demo”这个标题表明这是一个关于Android平台的开发项目,旨在模仿淘宝应用中的一个特定功能:自动填充接收到的短信验证码。在淘宝等电商平台注册或验证用户身份...

    自动获取短信验证码

    在IT行业中,自动获取短信验证码是一项常见的功能,尤其在移动应用和网络安全中广泛使用。它旨在简化用户体验,提高流程效率,同时确保账户安全。本文将深入探讨这一技术的原理、实现方式以及相关知识点。 首先,...

    Android 项目开发实战:短信验证码自动填写源码

    本文将深入探讨如何在Android项目中实现短信验证码的自动填充功能,通过分析给出的源码,我们可以了解到这个过程的关键技术点。 首先,我们需要理解短信验证码的生命周期。通常,验证码是由服务器发送到用户的手机...

    安卓短信彩信相关相关-android仿淘宝自动获取短信验证码demo.zip

    这个压缩包文件“安卓短信彩信相关相关-android仿淘宝自动获取短信验证码demo.zip”主要包含了一个安卓应用的示例代码,用于演示如何在Android平台上模仿淘宝应用,实现自动获取短信验证码的功能。在这个项目中,...

    安卓 自动获取短信验证码

    本文将详细介绍如何在Android应用中实现自动获取短信验证码并填充到输入框中的功能。 #### 二、所需权限 要在Android应用中实现自动获取短信验证码的功能,首先需要在AndroidManifest.xml文件中添加以下两个权限:...

    Android自动获取输入短信验证码库AutoVerifyCode详解

    该库可以自动申请短信权限,自动获取短信验证码,并将其输入到指定的EditText中。同时,该库还提供了多种配置选项,例如验证码长度、验证码类型、短信内容过滤、发送者号码过滤等,满足不同的开发需求。 二、使用 ...

    Android高级应用源码-android仿淘宝,自动获取短信验证码 demo.zip

    该压缩包文件“android仿淘宝,自动获取短信验证码 demo.zip”是针对Android开发的一个高级示例,主要展示了如何在Android应用程序中实现类似淘宝的自动获取短信验证码的功能。这个功能在现代移动应用中非常常见,...

    Android文本框自动填充短信验证码

    在Android开发中,文本框(EditText)的自动填充功能是一项重要的用户体验优化技术,尤其是在涉及到身份验证或注册场景时,如输入短信验证码。本项目“Android文本框自动填充短信验证码”旨在提供一个直接运行的示例...

Global site tag (gtag.js) - Google Analytics