Android获取短信验证码的实现方法

        Android开辟中关于短息验证码的设计层见叠出,愈来愈多的应用为了更好的提高软件的平安性,末尾应用经过效劳器向用户发送验证码的方法,来保护用户团体信息的平安性。不管是用户注册时的信息验证照样当用户收回找回暗码恳求时的短信验证,他们的任务道理大年夜致上是不合的,因为项目标需求研究了一下关于这方面的常识,本篇我将率领大年夜家一同完成这一当下风行的设计计划。

       尽人皆知,短信验证需求效劳器端生成一个验证码,然后发送到用户输入的手机上,这个过程需求效劳器自意向客户发送验证短信,所以这是就需求一个移动或联通的发送短息接口,因为自己今朝尚处于师长教师阶段,没有取得这个接口的权限,所以我就选择了借助网上的移动开辟效劳平台,来完成这个功用的完成,这里我借用的平台是:http://www.souluw.com/,大年夜家可以存眷一下,这个平台为我们开辟移动应用供给了很好的技巧指导,可以大年夜大年夜延长我们的开辟周期。空话不多说,下面末尾我们明天的重点。


       官方为我们供给了两种设计方法:第一种调用外部GUI完成;另外一种经过自定义GUI完成,关于第一种方法,我就不再多讲,因为官方文档供给了很具体的实施步调,大年夜家只需求依照下面的步调去完成便可,没有难度。本篇我将率领大年夜家经过自定义GUI完成短信验证功用。起首开辟之前你可以先查阅一下官方供给的无GUI API,然后下载一下官方供给的dome,做好这些任务以后,我们便可以末尾我们的设计了。

      1、将demo中的libs下的SMSSDK-1.1.5.jar和armeabi文件夹拷贝到我们项目标libs目次下,这是官方供给的类库jar包。

      2、在AndroidManifest.xml文件添加权限和声明Action: 

               package="com.example.android_sms"

               android:versionCode="1"

               android:versionName="1.0" >

               android:minSdkVersion="8"

               android:targetSdkVersion="18" />

               android:allowBackup="true"

               android:icon="@drawable/ic_launcher"

               android:label="@string/app_name"

               android:theme="@style/AppTheme" >

               android:name="com.example.android_sms.MainActivity"

               android:label="@string/app_name" >

               android:name="cn.smssdk.SMSSDKUIShell"

               android:configChanges="keyboardHidden|orientation|screenSize"

               android:theme="@android:style/Theme.Translucent.NoTitleBar"

               android:windowSoftInputMode="stateHidden|adjustResize" />

     3、设计我们的计划文件:

              android:layout_width="match_parent"

              android:layout_height="match_parent"

              tools:context=".MainActivity" >

              android:id="@+id/textView2"

              android:layout_width="wrap_content"

              android:layout_height="wrap_content"

              android:layout_centerHorizontal="true"

              android:layout_marginTop="20dp"

              android:text="短信验证"

              android:textColor="#00ffaa"

              android:textSize="20dp" />

              android:id="@+id/textView1"

              android:layout_width="wrap_content"

              android:layout_height="wrap_content"

              android:layout_alignParentLeft="true"

              android:layout_below="@+id/textView2"

              android:layout_marginLeft="20dp"

              android:layout_marginTop="20dp"

              android:text="手机号:" />

              android:id="@+id/phone"

              android:layout_width="wrap_content"

              android:layout_height="wrap_content"

              android:layout_alignBaseline="@+id/textView1"

              android:layout_alignBottom="@+id/textView1"

              android:layout_toRightOf="@+id/textView1"

              android:maxLength="11"

              android:ems="11"

              android:inputType="phone" >

              android:id="@+id/textView3"

              android:layout_width="wrap_content"

              android:layout_height="wrap_content"

              android:layout_alignLeft="@+id/textView1"

              android:layout_marginTop="40dp"

              android:layout_below="@+id/phone"

              android:text="验证码:"/>

              android:id="@+id/cord"

              android:layout_width="wrap_content"

              android:layout_height="wrap_content"

              android:layout_marginTop="20dp"

              android:layout_alignBaseline="@+id/textView3"

              android:layout_alignBottom="@+id/textView3"

              android:layout_alignLeft="@+id/phone"

              android:ems="4"

              android:maxLength="4"

              android:inputType="phone" />

              android:id="@+id/getcord"

             

              android:layout_width="wrap_content"

              android:layout_height="wrap_content"

              android:layout_alignTop="@+id/cord"

              android:layout_marginLeft="20dp"

              android:layout_marginTop="10dp"

              android:layout_toRightOf="@+id/cord"

              android:visibility="visible"

              android:text="获得验证码" />

              android:id="@+id/savecord"

              android:layout_width="fill_parent"

              android:layout_height="wrap_content"

              android:layout_below="@+id/cord"

              android:layout_margin="20dp"

              android:text="验证" />

              android:id="@+id/now"

              android:layout_width="fill_parent"

              android:layout_height="wrap_content"

              android:layout_above="@+id/savecord"

              android:layout_toRightOf="@+id/cord"

              android:gravity="center_horizontal"

              android:visibility="gone"

              android:text="提醒信息"

              android:textColor="#aaaaaa" />

     4、 我们的MainActivity: 

             

              public class MainActivity extends Activity implements OnClickListener{

              private EditText phone;

              private EditText cord;

              private TextView now;

              private Button getCord;

              private Button saveCord;

              private String iPhone;

              private String iCord;

              private int time = 60;

              private boolean flag = true;

              @Override

              protected void onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);

              requestWindowFeature(Window.FEATURE_NO_TITLE);

              setContentView(R.layout.activity_main);

              init();

         SMSSDK.initSDK(this, "<您的appkey>", "<您的appsecret>");

              EventHandler eh=new EventHandler(){

              @Override

              public void afterEvent(int event, int result, Object data) {

              Message msg = new Message();

              msg.arg1 = event;

              msg.arg2 = result;

              msg.obj = data;

              handler.sendMessage(msg);

              }

              };

             SMSSDK.registerEventHandler(eh);

              }

              private void init() {

              phone = (EditText) findViewById(R.id.phone);

              cord = (EditText) findViewById(R.id.cord);

              now = (TextView) findViewById(R.id.now);

              getCord = (Button) findViewById(R.id.getcord);

              saveCord = (Button) findViewById(R.id.savecord);

              getCord.setOnClickListener(this);

              saveCord.setOnClickListener(this);

              }

             @Override

              public void onClick(View v) {

              switch (v.getId()) {

              case R.id.getcord:

              if(!TextUtils.isEmpty(phone.getText().toString().trim())){

              if(phone.getText().toString().trim().length()==11){

              iPhone = phone.getText().toString().trim();

              SMSSDK.getVerificationCode("86",iPhone);

              cord.requestFocus();

              getCord.setVisibility(View.GONE);

              }else{

              Toast.makeText(MainActivity.this, "请输入完整德律风号码", Toast.LENGTH_LONG).show();

              phone.requestFocus();

              }

              }else{

             Toast.makeText(MainActivity.this, "请输入您的德律风号码", Toast.LENGTH_LONG).show();

              phone.requestFocus();

              }

             break;

             case R.id.savecord:

             if(!TextUtils.isEmpty(cord.getText().toString().trim())){

             if(cord.getText().toString().trim().length()==4){

             iCord = cord.getText().toString().trim();

             SMSSDK.submitVerificationCode("86", iPhone, iCord);

             flag = false;

             }else{

            Toast.makeText(MainActivity.this, "请输入完整验证码", Toast.LENGTH_LONG).show();

            cord.requestFocus();

            }

            }else{

           Toast.makeText(MainActivity.this, "请输入验证码", Toast.LENGTH_LONG).show();

           cord.requestFocus();

           }

           break;

           default:

           break;

            }

            }

           //验证码送胜利后提醒文字

           private void reminderText() {

           now.setVisibility(View.VISIBLE);

           handlerText.sendEmptyMessageDelayed(1, 1000);

           }

          Handler handlerText =new Handler(){

          public void handleMessage(Message msg) {

          if(msg.what==1){

          if(time>0){

          now.setText("验证码已发送"+time+"秒");

          time--;

          handlerText.sendEmptyMessageDelayed(1, 1000);

          }else{

          now.setText("提醒信息");

          time = 60;

          now.setVisibility(View.GONE);

          getCord.setVisibility(View.VISIBLE);

          }

          }else{

         cord.setText("");

         now.setText("提醒信息");

         time = 60;

         now.setVisibility(View.GONE);

         getCord.setVisibility(View.VISIBLE);

          }

          };

          };

         Handler handler=new Handler(){

         @Override

         public void handleMessage(Message msg) {

         // TODO Auto-generated method stub

         super.handleMessage(msg);

         int event = msg.arg1;

         int result = msg.arg2;

         Object data = msg.obj;

          Log.e("event", "event="+event);

          if (result == SMSSDK.RESULT_COMPLETE) {

          //短信注册胜利后,前去MainActivity,然后提醒新石友

           if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {//提交验证码胜利,验证经过

           Toast.makeText(getApplicationContext(), "验证码校验胜利", Toast.LENGTH_SHORT).show();

           handlerText.sendEmptyMessage(2);

            } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){//效劳器验证码发送胜利

           reminderText();

          Toast.makeText(getApplicationContext(), "验证码曾经发送", Toast.LENGTH_SHORT).show();

           }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){//前去支撑发送验证码

           的国家列表

          Toast.makeText(getApplicationContext(), "获得国家列表胜利", Toast.LENGTH_SHORT).show();

           }

           } else {

           if(flag){

           getCord.setVisibility(View.VISIBLE);

           Toast.makeText(MainActivity.this, "验证码获得掉败,

           请从新获得", Toast.LENGTH_SHORT).show();

           phone.requestFocus();

           }else{

           ((Throwable) data).printStackTrace();

           int resId = getStringRes(MainActivity.this, "smssdk_network_error");

           Toast.makeText(MainActivity.this, "验证码毛病", Toast.LENGTH_SHORT).show();

           cord.selectAll();

           if (resId > 0) {

           Toast.makeText(MainActivity.this, resId, Toast.LENGTH_SHORT).show();

            }

            }

            }

            }

            };

           @Override

            protected void onDestroy() {

            super.onDestroy();

           SMSSDK.unregisterAllEventHandler();

            }

            }

       注:appkey和appsecret:在http://www.souluw.com/注册一个账号后,创立一个发送短信的应用,系统会主动为生成appkey和appsecrethandlerText是我自定义设计的Handker对象,用于当效劳器发送验证码后,提醒用户留心。

       以上所述是老薛给大年夜家引见的Android获得短信验证码的完成方法,欲望对大年夜家有所协助,假设大年夜家有任何疑问请给我留言,老薛会及时答复大年夜家的。在此也十分感谢大年夜家对脚本之家网站的支撑!

猜你喜欢

免费接收短信验证码的安全度究竟有多高?

提高短信验证码的安全度

2019-05-19

免费验证码短信平台是怎么进行注册

免费验证码平台接收和发送短信方法

2019-05-19

APP短信验证码平台为什么能受到大家的欢迎?

APP短信验证码平台在我们生活中的应用

2019-05-18

微信发信息为空白是怎么回事?

微信发信息老是收不到

2019-05-16

免费接收短信验证平台颠覆传统行业的认知

免费接收验证码给大家每个人生活带来了便利

2019-05-16