你的位置:首页 > 软件开发 > 操作系统 > Android之短信验证码(用的Mob短信验证)

Android之短信验证码(用的Mob短信验证)

发布时间:2017-05-24 00:00:23
1、参考资料Mob网站:http://www.mob.com/Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android教程:http://www.cnblogs.com/lizhanqi/p/5720962.html ...

Android之短信验证码(用的Mob短信验证)

1、参考资料

Mob网站:http://www.mob.com/

Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android

教程:http://www.cnblogs.com/lizhanqi/p/5720962.html            

教程的源代码:  http://git.oschina.net/lizhanqi/MobSMSDemo

 

Dialog教程:http://blog.csdn.net/liang5630/article/details/44098899

定时器教程:http://www.cnblogs.com/wansho/p/5104335.html

 

2、前期准备

(1)Mob网站上下载SMS对应的SDK,解压出来为图1,打开图1,将其中的文件拷贝到as项目中的libs文件夹下,另外在add as library。

Android之短信验证码(用的Mob短信验证)

图1

Android之短信验证码(用的Mob短信验证)

图2

(2)在as项目中的AndroidManifest.

Android之短信验证码(用的Mob短信验证)

图3

(3)如果图4中的targetSdkVersion大于22,那么在代码中必须动态申请权限。

Android之短信验证码(用的Mob短信验证)

图4

(4)在as项目中的图7中的build.gradle文件中添加图5和图6红色框中内容。

Android之短信验证码(用的Mob短信验证)

图5

Android之短信验证码(用的Mob短信验证)

图6

Android之短信验证码(用的Mob短信验证)

图7

 

(5)在Mob网站上申请App Key和App Secret。

Android之短信验证码(用的Mob短信验证)

图8

 (6)Toast

 Android之短信验证码(用的Mob短信验证)

3、代码(没整理,将就看)

 

 1 package com.gxu.lepao.activity; 2  3 import android.Manifest; 4 import android.app.Dialog; 5 import android.content.DialogInterface; 6 import android.content.Intent; 7 import android.content.pm.PackageManager; 8 import android.os.Bundle; 9 import android.os.CountDownTimer; 10 import android.os.Handler; 11 import android.os.Message; 12 import android.support.v4.app.ActivityCompat; 13 import android.support.v4.content.ContextCompat; 14 import android.support.v7.app.AlertDialog; 15 import android.text.TextUtils; 16 import android.util.Log; 17 import android.view.View; 18 import android.widget.Button; 19 import android.widget.EditText; 20 import android.widget.TextView; 21 import android.widget.Toast; 22 import com.gxu.lepao.R; 23 import com.gxu.lepao.model.UserInfo; 24 import org.litepal.crud.DataSupport;//LitePal开源数据库框架 25 import java.util.List; 26 import cn.smssdk.EventHandler;//Mob短信验证码 27 import cn.smssdk.SMSSDK;//Mob短信验证码 28  29 /** 30  * Created by ljy on 2017-05-21. 31  * 获取和验证短信验证码界面 32 */ 33  34 public class RegisterActivity extends BaseActivity { 35  36   private EditText phoneEdit; 37   private EditText smsEdit; 38   private Button getSms; 39   private Button submitSms; 40   private TextView login; 41   private TextView reset; 42   private CountDownTimer countDownTimer; 43   //倒计时 44   private int TIME = 60; 45   //这是中国区号,如果需要其他国家列表,可以使用getSupportedCountries();获得国家区号 46   public String country = "86"; 47   //APPKEY 48   private static String appKey = "1e0d15118480d"; 49   // 填写从短信SDK应用后台注册得到的APPSECRET 50   private static String appSecret = "daa97d794e2436abcae624ac3785d2ef"; 51   //表示是否使用了registerEventHandler 52   private boolean ready; 53  54  55   @Override 56   protected void onCreate(Bundle savedInstanceState) { 57     super.onCreate(savedInstanceState); 58     Log.d("RegisterActivity","Task; id is " + getTaskId()); 59     setContentView(R.layout.activity_register); 60     // 初始化界面 61     initView(); 62     //初始化SMSSDK 63     initSDK(); 64     getSms.setOnClickListener(new View.OnClickListener(){ 65       @Override 66       public void onClick(View v) { 67         boolean isLogin = false; 68         //判断手机号码是否已注册过 69         isLogin = isRegister(); 70         if(!TextUtils.isEmpty(phoneEdit.getText().toString())){ 71           if(!isLogin){ 72             //发送短信权限 73             if(ContextCompat.checkSelfPermission(RegisterActivity.this 74                 ,Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED){ 75               //显示申请权限弹窗 76               showRequestPermission(); 77             }else{ 78               //弹窗确认 79               alterWarning(); 80             } 81           }else{ 82             Toast.makeText(RegisterActivity.this,"此手机号码已经注册过",Toast.LENGTH_SHORT).show(); 83           } 84         }else{ 85           Toast.makeText(RegisterActivity.this,"请输入手机号码",Toast.LENGTH_SHORT).show(); 86         } 87       } 88     }); 89     submitSms.setOnClickListener(new View.OnClickListener(){ 90       @Override 91       public void onClick(View v) { 92         String sms = smsEdit.getText().toString(); 93         String phone = phoneEdit.getText().toString(); 94         if(!TextUtils.isEmpty(sms)){ 95           SMSSDK.submitVerificationCode( country, phone, sms); 96         }else{ 97           Toast.makeText(RegisterActivity.this,"请输入验证码",Toast.LENGTH_SHORT).show(); 98         } 99       }100     });101     login.setOnClickListener(new View.OnClickListener(){102       @Override103       public void onClick(View v) {104         Intent intent = new Intent(RegisterActivity.this,LoginActivity.class);105         startActivity(intent);106       }107     });108     reset.setOnClickListener(new View.OnClickListener(){109       @Override110       public void onClick(View v) {111         Intent intent = new Intent(RegisterActivity.this,ResetPwdActivity.class);112         startActivity(intent);113       }114     });115   }116 117   //申请权限弹窗118   private void showRequestPermission(){119     //先new出一个**,设置好监听120     DialogInterface.OnClickListener dialogOnclicListener=new DialogInterface.OnClickListener(){121       @Override122       public void onClick(DialogInterface dialog, int which) {123         switch(which){124           case Dialog.BUTTON_POSITIVE:125             //接收短信权限126             ActivityCompat.requestPermissions(RegisterActivity.this,new String[]{Manifest.permission.RECEIVE_SMS},1);127            //发送短信权限128             ActivityCompat.requestPermissions(RegisterActivity.this,new String[]{Manifest.permission.SEND_SMS},2);129             //弹窗确认130             alterWarning();131             break;132           case Dialog.BUTTON_NEGATIVE:133             Toast.makeText(RegisterActivity.this, "拒绝" + which, Toast.LENGTH_SHORT).show();134             break;135         }136       }137     };138     //dialog参数设置139     AlertDialog.Builder builder=new AlertDialog.Builder(RegisterActivity.this); //先得到构造器140     builder.setTitle("申请权限"); //设置标题141     builder.setMessage("要允许lepao接收验证码短信吗?"); //设置内容142     builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id即可143     builder.setPositiveButton("允许",dialogOnclicListener);144     builder.setNegativeButton("拒绝", dialogOnclicListener);145     builder.create().show();146   }147 148   //申请权限149   public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {150     switch (requestCode){151       case 1:152         if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){153           //initSDK();154           Toast.makeText(this,"你授权。。。接收短信权限",Toast.LENGTH_SHORT).show();155         }else{156           Toast.makeText(this,"你拒绝。。。接收短信权限",Toast.LENGTH_SHORT).show();157         }158         break;159       case 2:160         if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){161           Toast.makeText(this,"你授权。。。发送短信权限",Toast.LENGTH_SHORT).show();162         }else{163           Toast.makeText(this,"你拒绝。。。发送短信权限",Toast.LENGTH_SHORT).show();164         }165         break;166       default:167     }168   }169 170   // 初始化短信SDK171   private void initSDK() {172     SMSSDK.initSDK(this, appKey, appSecret, true);173     //final Handler handler = new Handler();174     EventHandler eventHandler = new EventHandler() {175       public void afterEvent(int event, int result, Object data) {176         //回调完成177         if (result == SMSSDK.RESULT_COMPLETE)178         {179           //验证码验证成功180           if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)181           {182             toast("验证成功");183             Intent intent = new Intent(RegisterActivity.this,SetPwdActivity.class);184             intent.putExtra("phone",phoneEdit.getText().toString());185             startActivity(intent);186             finish();187           }188           //已发送验证码189           else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE)190           {191             toast("验证码已经发送");192           } else193           {194             ((Throwable) data).printStackTrace();195             String str = data.toString();196             toast(str);197           }198         }199         if(result==SMSSDK.RESULT_ERROR) {200           toast("验证码错误");201         }202 203       }204     };205     // 注册回调监听接口206     SMSSDK.registerEventHandler(eventHandler);207     ready = true;208   }209 210   //吐司的一个小方法211   private void toast(final String str) {212     runOnUiThread(new Runnable() {213       @Override214       public void run() {215         Toast.makeText(RegisterActivity.this, str, Toast.LENGTH_SHORT).show();216       }217     });218   }219 220 221 222   //销毁短信注册223   @Override224   protected void onDestroy() {225     // 注销回调接口registerEventHandler必须和unregisterEventHandler配套使用,否则可能造成内存泄漏。226     if(ready){227       SMSSDK.unregisterAllEventHandler();228     }229     super.onDestroy();230   }231 232   //初始化界面233   private void initView(){234     phoneEdit = (EditText) findViewById(R.id.phone);235     smsEdit = (EditText) findViewById(R.id.sms);236     getSms = (Button) findViewById(R.id.getSms);237     submitSms = (Button) findViewById(R.id.submitSms);238     login = (TextView) findViewById(R.id.login);239     reset = (TextView) findViewById(R.id.reset);240   }241 242   //弹窗确认243   private void alterWarning(){244     //先new出一个**,设置好监听245     DialogInterface.OnClickListener dialogOnclicListener=new DialogInterface.OnClickListener(){246       @Override247       public void onClick(DialogInterface dialog, int which) {248         switch(which){249           case Dialog.BUTTON_POSITIVE:250             dialog.dismiss();251             //通过sdk发送短信验证(请求获取短信验证码,在监听(eventHandle)中返回)252             SMSSDK.getVerificationCode(country, phoneEdit.getText().toString());253             //设置获取验证码按钮不能点击254             getSms.setClickable(false);255             //倒计时,执行次数为(TIME+1)*1000/1000,countDownTimer每次执行间隔:1000(单位为毫秒)256             countDownTimer = new CountDownTimer((TIME+1)*1000, 1000) {257               @Override258               public void onTick(long millisUntilFinished) {259                 getSms.setText(TIME-- + "秒后再次获取验证码");260               }261 262               @Override263               public void onFinish() {264                 //设置获取验证码按钮可以点击265                 getSms.setClickable(true);266                 getSms.setText("点击获取短信验证码");267               }268             };269             countDownTimer.start();270             break;271           case Dialog.BUTTON_NEGATIVE:272             dialog.dismiss();273             Toast.makeText(RegisterActivity.this, "已取消", Toast.LENGTH_SHORT).show();274             break;275         }276       }277     };278     //dialog参数设置279     AlertDialog.Builder builder=new AlertDialog.Builder(this); //先得到构造器280     builder.setTitle("发送短信"); //设置标题281     builder.setMessage("我们将把验证码发送到以下号码:\n"+country+"-"+phoneEdit.getText().toString()); //设置内容282     builder.setIcon(R.drawable.icon);//设置图标,图片id即可283     builder.setPositiveButton("确认",dialogOnclicListener);284     builder.setNegativeButton("取消", dialogOnclicListener);285     builder.create().show();286   }287 288   //判断手机号码是否已注册过289   public boolean isRegister(){290     boolean isLogin = false;291     。。。。。299     return isLogin;300   }301 302 303 }

原标题:Android之短信验证码(用的Mob短信验证)

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录