<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

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

    <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"/>

      測試過程中需要用到短信驗證碼時就可以實時獲取了

    posted on 2013-08-27 10:53 順其自然EVO 閱讀(4160) 評論(13)  編輯  收藏 所屬分類: android

    評論

    # re: Android自動獲取短信驗證碼 2014-02-06 15:27 孟千熙

    沒有驗證碼就建不了QQ號,請您給我個短信驗證碼吧!  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-02-06 15:28 孟千熙

    kji9ujjkjih你  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-03-22 23:23 5

    878  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-07-20 15:23 陳小龍

    獲取驗證碼  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-07-20 15:24 陳小龍

    124  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-07-20 15:25 陳小龍

    沒有驗證碼就建不了QQ號,請您給我個短信驗證碼吧!  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-07-20 15:33 陳小龍

    沒有驗證用不了QQ號,請您給我個短信驗證碼吧!  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-07-20 15:34 陳小龍

    沒有驗證用不了QQ號,請您給我個短信驗證碼吧  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-07-20 15:35 陳小龍

    ADSFDSVREW你  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-08-05 00:05 韓文杰

    我的qq獨立密碼忘了 請給我個驗證碼吧!  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2014-08-05 00:05 韓文杰

    我的qq獨立密碼忘了 請給我個驗證碼吧  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2015-09-23 13:01 hugege

    沒有驗證碼,就建不了QQ  回復  更多評論   

    # re: Android自動獲取短信驗證碼 2015-09-23 13:02 hugege

    沒有驗證碼就建不了QQ號  回復  更多評論   

    <2013年8月>
    28293031123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲av乱码一区二区三区| 亚洲天天做日日做天天欢毛片| 亚洲中字慕日产2021| av无码久久久久不卡免费网站| 亚洲最大的视频网站| 一个人看的www在线观看免费| 激情综合亚洲色婷婷五月APP| 日韩一区二区a片免费观看| 精品亚洲456在线播放| 国产精品久免费的黄网站| 国产产在线精品亚洲AAVV| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 免费一级毛片在线播放| 一日本道a高清免费播放| 亚洲午夜福利717| 久久国产免费一区二区三区| 亚洲美女一区二区三区| 最新猫咪www免费人成| 羞羞的视频在线免费观看| 久久久久国产亚洲AV麻豆| 免费A级毛片在线播放| 91丁香亚洲综合社区| 亚洲av麻豆aⅴ无码电影| 在线免费观看伊人三级电影| 久久久无码精品亚洲日韩蜜臀浪潮 | 国产日产亚洲系列最新| 久久亚洲免费视频| 亚洲无人区码一二三码区别图片| yy6080亚洲一级理论| 免费黄网站在线看| 日本亚洲免费无线码 | 亚洲香蕉免费有线视频| 日韩人妻无码免费视频一区二区三区| 特级一级毛片免费看| 老汉色老汉首页a亚洲| 国产免费观看a大片的网站| 最近中文字幕大全免费版在线| 2020久久精品亚洲热综合一本| 亚洲精品尤物yw在线影院| 在线观看H网址免费入口| 又大又硬又粗又黄的视频免费看|