Android开发之属于你的短信验证码(二)

君子欲讷于言而敏于行.—《论语》

最近身体有点不适,才注意到身体真的是最重要的,以后不管我们有多忙,一定要按时休息,坚持跑步,锻炼身体,做些颈椎的操等等,不要让我们挣的钱拿来看病,大家一起来坚持啊,不要让年轻蒙蔽了我们的双眼。

Android开发之属于你的短信验证码(一)我们主要讲了聚合数据,以及使用聚合数据开发短信验证码的准备工作及配置,这一篇我们将带来完整的功能的实现,以及界面UI的实现。如有谬误欢迎批评指正,如有疑问欢迎留言,谢谢

首先我们来看下界面第一个界面

我们在这个界面输入手机号,及短信的目的地,点击下一步后会弹出一个Dialog

点击确定后会调用会调用聚合数据给我们提供的sendCaptcha方法,这个方法我们在第一篇文章中已经用过

     /*点击确定后调用sendCaptcha方法向服务器提交手机号码
		              code(返回码):
		              服务器:0 成功,1 错误;
		              本  地:-2 本地网络异常,-3 服务器网络异常,-4 解析错误,-5 初始化异常。
		              reason(返回信息):成功或错误的原因。
		              result(返回结果):JSON格式,错误或者无返回值时为空。
		            */
	smsCaptcha.sendCaptcha(phone,new ResultCallBack() {

	@Override
	public void onResult(int code, String reason, String result) {
	closeDialog();
	if(code==0){
	afterCapterRequested();
	}
   }

});

当返回的code==0时说明短信验证码发送成功,我们需要进行界面的跳转,代码如下

//当code=0成功时,跳转到输入验证码的Activity
	private 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 2951
	private 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格式.错误或者无返回值时为空.*/
		@Override
		public 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();
}
//在主线程上更新tvCountDown
private void upDateTvCountDown(final String countDownTime) {
           runOnUiThread( new Runnable() {
                 @Override
                 public void run() {
                  tvCountDown.setText(Html. fromHtml(countDownTime));
                  tvCountDown.setEnabled( false);
                }
           });
     }

总结:其实使用聚合数据的短信验证码功能,主要就两个方法,一个是获取验证码的方法sendCaptcha,一个是提交验证码进行验证的方法commitCaptcha。我们在此基础上,可以根据需求对界面进行更改。以上就是对短信验证码的主要逻辑进行的介绍。

好了,关于使用聚合数据实现手机验证的知识点就讨论完了,欢迎大家留言。

短信验证码完整项目源码,猛戳这里

时间: 2024-10-15 15:41:40

Android开发之属于你的短信验证码(二)的相关文章

Android开发之属于你的短信验证码(一)

不飞则已,一飞冲天;不鸣则已,一鸣惊人---------司马迁 最近工作又有新需求,要求用户在注册的时候需要通过手机验证码,这样做的目的是防止用户通过一个邮箱来随便的注册,那么好,今天我们就 一起来学习一下Android中的短信验证码这一个知识点.如有谬误,欢迎批评指正,如有疑问欢迎留言,谢谢 在说这个知识点前,我们首先来了解下聚合数据 一.聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务.免费提供从天气查询.空气质量.地图坐标到金融基金.电商比价.违章查询等各

Android 项目开发实战:聚合数据短信验证码

聚合数据集成短信验证码官网: http://www.juhe.cn/docs/sdk/id/67 我根据文档集成了一个例子 效果: 源码下载:http://download.csdn.net/detail/zhaihaohao1/8917409 参考视频:http://www.jikexueyuan.com/course/495.html 文章来源:http://blog.csdn.net/zhaihaohao1/article/details/46980551

flask开发restful api系列(5)-短信验证码

我们现在开发app,注册用户的时候,不再像web一样,发送到个人邮箱了,毕竟个人邮箱在移动端填写验证都很麻烦,一般都采用短信验证码的方式.今天我们就讲讲这方面的内容. 首先,先找一个平台吧.我们公司找的容联云通讯这个平台,至少目前为止,用的还可以.先在容联上注册一下,然后创建一个应用,如下图所示: 我只勾选了2个功能,他们这边还有很多其他功能,暂时用不到,就不选了.好了,点击"确认",一个应用就弄好了,下面就尝试着写代码发短信吧. 容联为开发者提供了免费测试功能,但一个号码基本不会超过

【Python web 开发】云片网发送短信验证码

发送短信验证码 是要使用第三方服务的,运营商是不可能提供对外的个人发送短信服务功能,我们本身也没有能力去发送验证码,云片网是目前提供这种服务使用率较高的服务商之一 我们先来看下云片网国内单条发送短信的api 根据api 写了一个脚本,这个appkey 我还没申请 如何使用云片网发送短信? 1.首选要申请签名 + 填写 短信模板 2.签名审核,短信模板审核 3.一定要将自己的服务器的ip地址填写到  [云片网--设置--ip 白名单--添加服务器的IP地址] 不然会发送失败 本机测试查到本机的IP

Android开发,URI 如:发短信,发彩信,调用通讯录等

一.直接拨打电话,与三不同的是,这个直接拨打电话,而不是打开拨号界面 Uri uri = Uri.parse("tel:10086"); Intent intent = new Intent(Intent.ACTION_CALL, uri); 二.打开拨号界面,类型是Intent.ACTION_DIAL Uri uri = Uri.parse("tel:10086"); Intent intent = new Intent(Intent.ACTION_DIAL, uri); 三.打开一个网页,类

Android笔记(五十一) 短信验证码集成——mob平台

官方网站:www.mob.com 注册帐号,下载SDK,导入SDK就不说了,主要写一下简单集成如何使用,以后忘记了也可以翻着看看. 详细的可以参考官方文档: http://wiki.mob.com/android-%E7%9F%AD%E4%BF%A1sdk%E6%93%8D%E4%BD%9C%E5%9B%9E%E8%B0%83/ http://wiki.mob.com/sms-android-%E6%97%A0gui%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8/ 步骤

Android第二十八期 - 第三方短信验证码

这次的例子用的是聚合数据的接口,代码已经整理好,有两种方式展现,效果如下:

配送短信猫二次开发接口提供多种开发语言示例

免费配送的信猫二次开发接口提供有多种开发语言示例,如C#.C++.Delphi.PowerBuilder.VB.net.VC++.VisualBasic等多种开发示例方便程序开发人员开发调试.使用简单方便,将sms.dll文件拷贝到系统安装目录中的system32文件夹中,然后再根据以下接口函数说明和提供的例程源码开发,无需安装,免加密狗. 短信猫二次开发接口提供的开发语言示例有: 部分短信猫二次开发接口函数说明: 1.Sms_Connection(Com_Port As Integer,Com

android获取短信验证码并自动填写的实现一

android获取短信验证码并自动填写的实现一 android获取短信验证码并自动填写的实现一,有需要的朋友可以参考下. 现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> &l