<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)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲一区二区三区免费视频| 亚洲色大网站WWW永久网站| 一本久久免费视频| 国产中文字幕免费观看| 亚洲人成电影网站免费| 麻豆国产入口在线观看免费| 亚洲成av人片在www鸭子| 免费v片视频在线观看视频| 农村寡妇一级毛片免费看视频 | 毛片基地免费观看| 亚洲欧美自偷自拍另类视| 日韩毛片免费在线观看| 永久免费无码网站在线观看个| 亚洲综合国产一区二区三区| 久99久精品免费视频热77| 久久久久亚洲AV无码麻豆| 久久国内免费视频| 在线观看国产一区亚洲bd| 亚洲欧洲中文日韩av乱码| 免费观看成人久久网免费观看| 亚洲女人影院想要爱| 日本一道在线日本一道高清不卡免费 | 蜜臀91精品国产免费观看| 美女黄网站人色视频免费| 亚洲精品美女久久777777| 亚洲成人免费电影| 亚洲第一第二第三第四第五第六| 亚洲精品视频在线观看你懂的| 四虎影视在线影院在线观看免费视频 | 图图资源网亚洲综合网站| 猫咪社区免费资源在线观看| 国产AV日韩A∨亚洲AV电影| 亚洲成色在线综合网站| 成人免费一区二区无码视频| 一级一看免费完整版毛片| 亚洲精品高清国产一久久| 国产美女a做受大片免费| 免费人成黄页在线观看日本| 亚洲精品无码av片| 亚洲AV无码成人精品区天堂 | 成人免费毛片内射美女APP|