Android短信验证 自动输入到文本框

来源:互联网 发布:网络推广方案 编辑:程序博客网 时间:2024/05/21 21:40

  具体效果就是,你在注册界面填写手机号,点击获取验证码按钮,---然后会收到验证短信,填入验证码后点击注册按钮,如果验证正确就可以跳转到另外一个界面

  1.首先大家需要在mob官网注册一个账号,mob是一个免费的短信验证平台

  2.在mob.com后台创建应用

  3.下载对应的sdk

  4.将sdk作为一个library导入到你的项目中

  5.现在就可以在你的项目中编写代码使用mob提供的这个功能了

  具体代码如下:

  首先配置文件加入权限:

XML/HTML代码
  1. <uses-permission android:name="android.permission.READ_CONTACTS" />    
  2. <uses-permission android:name="android.permission.READ_PHONE_STATE" />    
  3. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    
  4. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    
  5. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>    
  6. <uses-permission android:name="android.permission.INTERNET" />    
  7. <uses-permission android:name="android.permission.RECEIVE_SMS" />    
  8. <uses-permission android:name="android.permission.GET_TASKS" />    
  9. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />   

  然后声明activity(这是固定的不能修改,直接复制粘贴到你的配置文件就行)

XML/HTML代码
  1. <activity    
  2. android:name="cn.smssdk.SMSSDKUIShell"    
  3. android:configChanges="keyboardHidden|orientation|screenSize"    
  4. android:theme="@android:style/Theme.Translucent.NoTitleBar"    
  5. android:windowSoftInputMode="stateHidden|adjustResize"/>    

  注册界面xml布局文件

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     android:layout_width="match_parent"    
  4.     android:layout_height="match_parent"    
  5.     android:orientation="vertical" >    
  6.     
  7.     <EditText    
  8.         android:id="@+id/login_input_phone_et"    
  9.         android:layout_width="280dp"    
  10.         android:layout_height="wrap_content"    
  11.         android:layout_alignParentTop="true"    
  12.         android:layout_centerHorizontal="true"    
  13.         android:layout_marginTop="107dp"    
  14.         android:ems="10"    
  15.         android:hint="请输入手机号"    
  16.         android:inputType="phone" />    
  17.     
  18.     <requestFocus />    
  19.     
  20.     <EditText    
  21.         android:id="@+id/login_input_code_et"    
  22.         android:layout_width="170dp"    
  23.         android:layout_height="wrap_content"    
  24.         android:layout_alignLeft="@+id/login_input_phone_et"    
  25.         android:layout_below="@+id/login_input_phone_et"    
  26.         android:layout_marginTop="44dp"    
  27.         android:hint="请输入验证码"    
  28.         android:inputType="textPassword" >    
  29.     </EditText>    
  30.     
  31.     <Button    
  32.         android:id="@+id/login_request_code_btn"    
  33.         android:layout_width="wrap_content"    
  34.         android:layout_height="wrap_content"    
  35.         android:layout_alignRight="@+id/login_input_phone_et"    
  36.         android:layout_alignTop="@+id/login_input_code_et"    
  37.         android:text="获取验证码" />    
  38.     
  39.     <Button    
  40.         android:id="@+id/login_commit_btn"    
  41.         android:layout_width="280dp"    
  42.         android:layout_height="wrap_content"    
  43.         android:layout_alignLeft="@+id/login_input_code_et"    
  44.         android:layout_below="@+id/login_input_code_et"    
  45.         android:layout_marginTop="44dp"    
  46.         android:text="注册" />    
  47.     
  48. </RelativeLayout>    

  注册界面activity

Java代码
  1. package com.mobdemo.view;    
  2.     
  3.     
  4. import cn.smssdk.EventHandler;    
  5. import cn.smssdk.SMSSDK;    
  6. import android.app.Activity;    
  7. import android.content.Intent;    
  8. import android.os.Bundle;    
  9. import android.os.Handler;    
  10. import android.os.Message;    
  11. import android.text.TextUtils;    
  12. import android.util.Log;    
  13. import android.view.Gravity;    
  14. import android.view.View;    
  15. import android.view.View.OnClickListener;    
  16. import android.widget.Button;    
  17. import android.widget.EditText;    
  18. import android.widget.FrameLayout;    
  19. import android.widget.ProgressBar;    
  20. import android.widget.Toast;    
  21. import android.widget.FrameLayout.LayoutParams;    
  22.     
  23. public class LoginActivity extends Activity implements OnClickListener {    
  24.     String APPKEY = "101732155b605";    
  25.     String APPSECRETE = "69d1850f4b74100266ab576b64e6cb16";    
  26.     
  27.     // 手机号输入框    
  28.     private EditText inputPhoneEt;    
  29.     
  30.     // 验证码输入框    
  31.     private EditText inputCodeEt;    
  32.     
  33.     // 获取验证码按钮    
  34.     private Button requestCodeBtn;    
  35.     
  36.     // 注册按钮    
  37.     private Button commitBtn;    
  38.     
  39.     //    
  40.     int i = 30;    
  41.     
  42.     @Override    
  43.     protected void onCreate(Bundle savedInstanceState) {    
  44.         super.onCreate(savedInstanceState);    
  45.         setContentView(R.layout.activity_login);    
  46.     
  47.         init();    
  48.     }    
  49.     
  50.     /**  
  51.      * 初始化控件  
  52.      */    
  53.     private void init() {    
  54.         inputPhoneEt = (EditText) findViewById(R.id.login_input_phone_et);    
  55.         inputCodeEt = (EditText) findViewById(R.id.login_input_code_et);    
  56.         requestCodeBtn = (Button) findViewById(R.id.login_request_code_btn);    
  57.         commitBtn = (Button) findViewById(R.id.login_commit_btn);    
  58.         requestCodeBtn.setOnClickListener(this);    
  59.         commitBtn.setOnClickListener(this);    
  60.     
  61.         // 启动短信验证sdk    
  62.         SMSSDK.initSDK(this, APPKEY, APPSECRETE);    
  63.         EventHandler eventHandler = new EventHandler(){    
  64.             @Override    
  65.             public void afterEvent(int event, int result, Object data) {    
  66.                 Message msg = new Message();    
  67.                 msg.arg1 = event;    
  68.                 msg.arg2 = result;    
  69.                 msg.obj = data;    
  70.                 handler.sendMessage(msg);    
  71.             }    
  72.         };    
  73.         //注册回调监听接口    
  74.         SMSSDK.registerEventHandler(eventHandler);    
  75.     }    
  76.     
  77.     @Override    
  78.     public void onClick(View v) {    
  79.         String phoneNums = inputPhoneEt.getText().toString();    
  80.         switch (v.getId()) {    
  81.         case R.id.login_request_code_btn:    
  82.             // 1. 通过规则判断手机号    
  83.             if (!judgePhoneNums(phoneNums)) {    
  84.                 return;    
  85.             } // 2. 通过sdk发送短信验证    
  86.             SMSSDK.getVerificationCode("86", phoneNums);    
  87.     
  88.             // 3. 把按钮变成不可点击,并且显示倒计时(正在获取)    
  89.             requestCodeBtn.setClickable(false);    
  90.             requestCodeBtn.setText("重新发送(" + i + ")");    
  91.             new Thread(new Runnable() {    
  92.                 @Override    
  93.                 public void run() {    
  94.                     for (; i > 0; i--) {    
  95.                         handler.sendEmptyMessage(-9);    
  96.                         if (i <= 0) {    
  97.                             break;    
  98.                         }    
  99.                         try {    
  100.                             Thread.sleep(1000);    
  101.                         } catch (InterruptedException e) {    
  102.                             e.printStackTrace();    
  103.                         }    
  104.                     }    
  105.                     handler.sendEmptyMessage(-8);    
  106.                 }    
  107.             }).start();    
  108.             break;    
  109.     
  110.         case R.id.login_commit_btn:    
  111.             //将收到的验证码和手机号提交再次核对    
  112.             SMSSDK.submitVerificationCode("86", phoneNums, inputCodeEt    
  113.                     .getText().toString());    
  114.             //createProgressBar();    
  115.             break;    
  116.         }    
  117.     }    
  118.     
  119.     /**  
  120.      *   
  121.      */    
  122.     Handler handler = new Handler() {    
  123.         public void handleMessage(Message msg) {    
  124.             if (msg.what == -9) {    
  125.                 requestCodeBtn.setText("重新发送(" + i + ")");    
  126.             } else if (msg.what == -8) {    
  127.                 requestCodeBtn.setText("获取验证码");    
  128.                 requestCodeBtn.setClickable(true);    
  129.                 i = 30;    
  130.             } else {    
  131.                 int event = msg.arg1;    
  132.                 int result = msg.arg2;    
  133.                 Object data = msg.obj;    
  134.                 Log.e("event""event=" + event);    
  135.                 if (result == SMSSDK.RESULT_COMPLETE) {    
  136.                     // 短信注册成功后,返回MainActivity,然后提示    
  137.                     if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {// 提交验证码成功    
  138.                         Toast.makeText(getApplicationContext(), "提交验证码成功",    
  139.                                 Toast.LENGTH_SHORT).show();    
  140.                         Intent intent = new Intent(LoginActivity.this,    
  141.                                 MainActivity.class);    
  142.                         startActivity(intent);    
  143.                     } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {    
  144.                         Toast.makeText(getApplicationContext(), "正在获取验证码",    
  145.                                 Toast.LENGTH_SHORT).show();    
  146.                     } else {    
  147.                         ((Throwable) data).printStackTrace();    
  148.                     }    
  149.                 }    
  150.             }    
  151.         }    
  152.     };    
  153.     
  154.     
  155.     /**  
  156.      * 判断手机号码是否合理  
  157.      *   
  158.      * @param phoneNums  
  159.      */    
  160.     private boolean judgePhoneNums(String phoneNums) {    
  161.         if (isMatchLength(phoneNums, 11)    
  162.                 && isMobileNO(phoneNums)) {    
  163.             return true;    
  164.         }    
  165.         Toast.makeText(this"手机号码输入有误!",Toast.LENGTH_SHORT).show();    
  166.         return false;    
  167.     }    
  168.     
  169.     /**  
  170.      * 判断一个字符串的位数  
  171.      * @param str  
  172.      * @param length  
  173.      * @return  
  174.      */    
  175.     public static boolean isMatchLength(String str, int length) {    
  176.         if (str.isEmpty()) {    
  177.             return false;    
  178.         } else {    
  179.             return str.length() == length ? true : false;    
  180.         }    
  181.     }    
  182.     
  183.     /**  
  184.      * 验证手机格式  
  185.      */    
  186.     public static boolean isMobileNO(String mobileNums) {    
  187.         /*  
  188.          * 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188  
  189.          * 联通:130、131、132、152、155、156、185、186 电信:133、153、180、189、(1349卫通)  
  190.          * 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9  
  191.          */    
  192.         String telRegex = "[1][358]\\d{9}";// "[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。    
  193.         if (TextUtils.isEmpty(mobileNums))    
  194.             return false;    
  195.         else    
  196.             return mobileNums.matches(telRegex);    
  197.     }    
  198.     
  199.     /**  
  200.      * progressbar  
  201.      */    
  202.     private void createProgressBar() {    
  203.         FrameLayout layout = (FrameLayout) findViewById(android.R.id.content);    
  204.         FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(    
  205.                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);    
  206.         layoutParams.gravity = Gravity.CENTER;    
  207.         ProgressBar mProBar = new ProgressBar(this);    
  208.         mProBar.setLayoutParams(layoutParams);    
  209.         mProBar.setVisibility(View.VISIBLE);    
  210.         layout.addView(mProBar);    
  211.     }    
  212.     
  213.     @Override    
  214.     protected void onDestroy() {    
  215.         SMSSDK.unregisterAllEventHandler();    
  216.         super.onDestroy();    
  217.     }    

  1. }    

Android中内容观察者的使用---- ContentObserver类详解
http://blog.csdn.net/qinjuning/article/details/7047607

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 b站不小心点了差评怎么办 c盘文件目录损坏且无法读取怎么办 打印发票时发票上的字体变大怎么办 淘宝店铺食品违法遇到打假人怎么办 搜狗输入法说我没有权限安装怎么办 申请移民美国期间护照到期了怎么办 自己申请的qq号账号忘了怎么办 苹果手机下完游戏找不到在哪怎么办 苹果四下游戏的密码忘了怎么办 qq斗地主老自动发消息怎么办 微信小程序斗地主被限制了怎么办 台式电脑玩斗地主总黑屏怎么办 玩斗地主屏幕出现一半玩不了怎么办 电脑qq文件破损或部分丢失怎么办 华为平板电脑开机密码忘记了怎么办 微信被太多人投诉被限制登录怎么办 微信账号被永久封号里面的钱怎么办 乱世王者领礼包时账号异常怎么办 qq填写资料见证号格式错误怎么办 如果把微信注销 王者的号怎么办 93元的吃鸡号忘了激活吗怎么办 王者荣耀实名注册不是自己的怎么办 苹果手机打开qq太慢了怎么办 剪辑视频打开了软件关闭不了怎么办 玩永恒纪元手游网络老掉线怎么办 绝地求生买的钥匙激活码忘了怎么办 魅族手机移动网络打不开网页怎么办 小米5s升级后下载不了软件怎么办 电脑可以登qq却开不了网页怎么办 手机微信图片没下载原图怎么办 qq号密码忘了密保忘了怎么办 扣扣更改密保手机失败怎么办 至尊宝安全模式密保手机更换怎么办 微信号手机号换了密码忘记了怎么办 被加盟网店托管骗了怎么办 善林金融倒闭投资者的钱怎么办? 微信支付密码忘了怎么办没绑卡 美团外卖没有骑手接单怎么办 发微信的"发送"没有了怎么办 华硕电脑下面的任务栏卡住了怎么办 微信登别人电脑上忘记退了怎么办