android自动获取短信验证码 -凯发k8网页登录

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








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

posted on 2013-08-27 10:53 顺其自然evo 阅读(4099) 评论(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

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

没有验证码,就建不了qq  回复     

# re: android自动获取短信验证码 2015-09-23 13:02

没有验证码就建不了qq号  回复     

2013年8月
282930313
47810
1117
1824
252631
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

网站地图