Android开发之属于你的短信验证码(二)
来源:互联网 发布:java poi读取excel文件 编辑:程序博客网 时间:2024/06/06 00:13
君子欲讷于言而敏于行.—《论语》
最近身体有点不适,才注意到身体真的是最重要的,以后不管我们有多忙,一定要按时休息,坚持跑步,锻炼身体,做些颈椎的操等等,不要让我们挣的钱拿来看病,大家一起来坚持啊,不要让年轻蒙蔽了我们的双眼。
在Android开发之属于你的短信验证码(一)我们主要讲了聚合数据,以及使用聚合数据开发短信验证码的准备工作及配置,这一篇我们将带来完整的功能的实现,以及界面UI的实现。如有谬误欢迎批评指正,如有疑问欢迎留言,谢谢
首先我们来看下界面第一个界面
我们在这个界面输入手机号,及短信的目的地,点击下一步后会弹出一个Dialog
点击确定后会调用会调用聚合数据给我们提供的sendCaptcha方法,这个方法我们在第一篇文章中已经用过
/*点击确定后调用sendCaptcha方法向服务器提交手机号码 code(返回码): 服务器:0 成功,1 错误; 本 地:-2 本地网络异常,-3 服务器网络异常,-4 解析错误,-5 初始化异常。 reason(返回信息):成功或错误的原因。 result(返回结果):JSON格式,错误或者无返回值时为空。 */ smsCaptcha.sendCaptcha(phone,new ResultCallBack() {@Overridepublic void onResult(int code, String reason, String result) {closeDialog();if(code==0){afterCapterRequested();} }});当返回的code==0时说明短信验证码发送成功,我们需要进行界面的跳转,代码如下
//当code=0成功时,跳转到输入验证码的Activityprivate void afterCapterRequested() {String phone=etPhoneNumber.getText().toString().trim().replaceAll("\\ss*", "");String code=tvCountryNumber.getText().toString().trim();String fomatedPhone=code+" "+splitPhoneNum(phone);Toast.makeText(this,"成功",Toast.LENGTH_SHORT).show();Intent intent=new Intent();intent.setClass(RegistActivity.this,CaptchaActivity.class);//把手机号码和格式化的手机号码传过去intent.putExtra("formatedPhone",fomatedPhone);intent.putExtra("phone",phone);startActivity(intent);}//格式化手机号码的方法,格式化后的形式:+86 131 4118 2951private String splitPhoneNum(String phone) {StringBuilder builder=new StringBuilder(phone);builder.reverse();for(int i=4,len=builder.length();i<len;i+=5){builder.insert(i,' ');}builder.reverse();return builder.toString();}跳转的界面的布局如下
在这个界面我们需要输入短信验证码,输入短信验证码后点击下一步时会调用聚合数据的
commitCaptcha这个方法,比对数据的方法,
smsCaptcha.commitCaptcha(phoneNumbber,verfiyCode,new ResultCallBack() {/* code:返回码: 服务器: 0 成功; 1 错误; 本地: -2 本地网络异常; -3 服务器网络异常;-4 解析错误;-5初始化异常 reason:返回信息 成功或错误原因. result:返回结果,JSON格式.错误或者无返回值时为空.*/ @Overridepublic void onResult(int code,String reason,String result) {if(code==0){Log.i(TAG,code+"");Log.i(TAG,reason);Log.i(TAG,result);Toast.makeText(CaptchaActivity.this,"您输入的验证码正确",Toast.LENGTH_SHORT).show();CaptchaActivity.this.finish();}else{Toast.makeText(CaptchaActivity.this,"您输入的验证码不正确",Toast.LENGTH_SHORT).show();}}});
我们可以看到这个方法所需的参数是①手机号码②手机验证码,我们调用此方法后聚合数据的服务器会进行判断,此验证码是否是刚才发送给这个手机号的验证码,验证后给我返回结果,我们根据返回的结果就可以进行相应的操作。
在上面的界面中我们发现有一个倒计时的功能,我在这里说一下思路,当然这个倒计时方法有很多。在这个Demo中倒计时是放在一个tvCountDown的一个textView中,首先
//R.string.receiveMessgeCountDown的内容为:<Data>接收短信大约需要<font color=#209526>%s</font>秒</Data>//这句话就是用time把 html里的%号替换掉String unReceive=getResources().getString(R.string. receiveMessgeCountDown,time );//把用html格式化的字符串设置给倒计时的文本框tvCountDown.setText(Html.fromHtml(unReceive));这样我们可以把html格式化的文本填充到tvCountDown中。接下来就是倒计时的方法了
private final int RETRY_INTERVAL =60;private int time=RETRY_INTERVAL; //倒计时方法 private void countDown() { new Thread( new Runnable() { @Override public void run() { while( time-->0){ //减一后的time把<Data>接收短信大约需要<font color=#209526>%s</font>秒</Data>中的%号替换掉 String countDownTime=CaptchaActivity.this .getResources().getString(R.string. receiveMessgeCountDown,time ); //在主线程上更新tvCountDown upDateTvCountDown(countDownTime); try { Thread. sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } String countDownTime=CaptchaActivity.this .getResources().getString(R.string. unreceiveMessage, time); upDateTvCountDown(countDownTime); time = RETRY_INTERVAL; } }).start();}//在主线程上更新tvCountDownprivate void upDateTvCountDown(final String countDownTime) { runOnUiThread( new Runnable() { @Override public void run() { tvCountDown.setText(Html. fromHtml(countDownTime)); tvCountDown.setEnabled( false); } }); }总结:其实使用聚合数据的短信验证码功能,主要就两个方法,一个是获取验证码的方法sendCaptcha,一个是提交验证码进行验证的方法commitCaptcha。我们在此基础上,可以根据需求对界面进行更改。以上就是对短信验证码的主要逻辑进行的介绍。
短信验证码完整项目源码,猛戳这里
0 0
- Android开发之属于你的短信验证码(二)
- Android开发之属于你的短信验证码(一)
- android开发之短信验证码
- Android开发之短信验证码示例
- Android开发之MOB短信验证SDK的使用(二)
- Android之短信验证码
- Android之短信验证码
- Android之短信验证码
- Android开发之自动填写短信验证码
- Android开发之用Bmob实现短信验证码功能
- Android实现获取短信验证码的功能(二)
- android 短信验证码自动填写的二种方法
- Android之短信验证码(用的Mob短信验证)
- 『实践』Android之短信验证码(用的Mob短信验证)
- android之短信验证
- Android 开发第一步 短信验证码登录
- Android 之短信验证码自动填写
- Android开发之MOB短信验证SDK的使用(一)
- express 与 http 的区别
- QQ协议分析(一)
- RMAN主要命令 show,list,crosscheck,delete详解
- U盘做为系统盘安装系统,出现start booting from usb device和boot failed解决方案
- Android小技巧(3)
- Android开发之属于你的短信验证码(二)
- 向天草学习之路(三)
- Win32控件-------Tab控件基本架构
- 记录一些opencv中可用的格式转换
- 安卓添加背景图片
- java开发--JDK的安装步骤
- JAVA开发_网络连接请求
- 百度网盘Xcode 6.3下载地址
- 条款05:了解C++默默编写并调用哪些函数