Android 短信验证码控件

Android 短信验证码控件,便于项目中使用统一样式,统一提示修改,个人认为挺好用的

<span style="font-size:18px;">public class SMSButton extends Button {
	/** 是否展示 */
	private boolean mAttached;
	/** 发送验证码后等待的时间 */
	private int delayTime = 60;
	/** Button 上面的文本 */
	private String showText = "获取";
	/** Button 等待的时候显示的文本 */
	private String delayText = FORMATETAG + "秒";
	/** 现在是否在倒计时 */
	private boolean isDelayed = false;

	private SMSOnClickListener clickListener;

	private int currentDelayTime = 0;

	private static final String FORMATETAG = "%d";

	private Runnable mTimer = new Runnable() {

		@Override
		public void run() {
			currentDelayTime -= 1;
			if (currentDelayTime <= 0) {
				isDelayed = false;
				setClickable(true);
				setText(showText);
			} else {
				getHandler().postDelayed(mTimer, 1000);
				setDelayTimeText(currentDelayTime);
			}
		}
	};

	private void setDelayTimeText(int time) {
		setText(String.format(delayText, time));
	}

	public SMSButton(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		initView();
	}

	public SMSButton(Context context, AttributeSet attrs) {
		super(context, attrs);
		initView();
	}

	public SMSButton(Context context) {
		super(context);
		initView();
	}

	@Override
	public void setOnClickListener(OnClickListener l) {
		super.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				if (!isDelayed) {// 如果没有在等待
					if (clickListener != null) {
						if (clickListener.validate()) {
							setClickable(false);
							isDelayed = true;
							currentDelayTime = delayTime;
							getHandler().post(mTimer);
							clickListener.onClick();
						}
					}
				}
			}
		});
	}

	/**
	 * 初始化页面
	 */
	private void initView() {
		String text = getText().toString().toString().trim();
		if (text != null && !"".equals(text)) {
			showText = text;
		}
	}

	@Override
	protected void onAttachedToWindow() {
		super.onAttachedToWindow();
		if (!mAttached) {
			mAttached = true;
			setText(showText);
		}
	}

	@Override
	protected void onDetachedFromWindow() {
		super.onDetachedFromWindow();
		if (mAttached) {
			mAttached = false;
			isDelayed = false;
			getHandler().removeCallbacks(mTimer);
		}
	}

	public int getDelayTime() {
		return delayTime;
	}

	public void setDelayTime(int delayTime) {
		this.delayTime = delayTime;
	}

	public String getShowText() {
		return showText;
	}

	public void setShowText(String showText) {
		this.showText = showText;
	}

	public String getDelayText() {
		return delayText;
	}

	public void setDelayText(String start, String end) {
		this.delayText = start + FORMATETAG + end;
	}

	public SMSOnClickListener getSMSOnClickListener() {
		return clickListener;
	}

	public void setSMSOnClickListener(SMSOnClickListener clickListener) {
		setOnClickListener(null);
		this.clickListener = clickListener;
	}

	public interface SMSOnClickListener {
		public boolean validate();

		public void onClick();
	}</span>

用法:

	/**
	 * 例子
	 *
	 * smsButton = (SMSButton) findViewById(R.id.smsButton);
	 * smsButton.setShowText("获取");
	 * smsButton.setDelayText("等", "秒"); smsButton.setSMSOnClickListener(new
	 * SMSOnClickListener() {
	 *
	 * @Override public boolean validate() { return true; }
	 * @Override public void onClick() {
	 *           ToastUtil.getInstance().toastInCenter(LoadingActivity.this,
	 *           "onClick"); } });
	 */
时间: 2024-08-29 08:38:20

Android 短信验证码控件的相关文章

Android之短信验证码

我们今天所使用的方案只是android手机设备集成短信验证码功能的方案之一. 我们所采用的方案是使用聚合数据的短信验证sdk. 程序的界面如下所示: 实现步骤: 1.到聚合数据官网上申请短信验证SDK数据,生成AppKey,如下图所示: 2.配置工程,把相关的sdk库导入到Project中去,: 3.配置AndroidManifest.xml文件,在Application节点中加入以下代码: <meta-data android:name="JUHE_KEY" android:v

Android自动读取短信验证码

Android自动读取短信验证码 extends:http://www.cnblogs.com/jiayaguang/p/4366384.html 实现自动获取手机的短信验证码,原理通过监听短信数据库的变化来解析短信,获取验证码. 直接附上代码: 1.建立一个监听数据库的类 import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.data

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

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

android拓展之使用bmob后端云来实现短信验证码

bmob后端云,这个就不用我说了吧,它在我们安卓开发的过程当中非常重要.具体有哪些服务可以bmob的官网来查询 关于怎么实现短信验证码的方式,其实在bmob的后端云里面已经详细的介绍了的.我在这里最主要的是分享一下经验 1.要想实现短信验证码,必须在bmob的官网上下载短信验证码的sdk,然后导入工程 2.使用SDK,这个sdk可以单独使用,直接初始化就可以使用.那什么是单独使用呢?就是直接初始化这个SDK就可以使用,而不用初始化Bmob A.怎么初始化bmob? 通过调用Bmob.initia

Android开发:app工程集成mob短信验证码功能

一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A

Android实战简易教程-第三十六枪(监听短信-实现短信验证码自动填入)

一般用户喜欢用手机号作为用户名注册APP账号,这时一般都是通过手机验证码的方式进行验证,下面我们就研究一个非常实用的方法,通过监听短信-实现短信验证码的自动填入,提高用户体验. 首先我们看一下如何监听手机短信. 一.获取短信全部内容 1.新建一个SMSBroadcastReceiver: package com.example.messagecut; import java.text.SimpleDateFormat; import java.util.Date; import android.

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

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

Android获取短信验证码倒计时

目前越来越多的app在注册或是进行对应操作时,要求获取短信验证码,在点击了获取短信验证码的按钮后,就是出现倒计时,比如倒计时120S,在倒计时期间内,按钮点击是无效的,当倒计时结束后,如果你没有获取到验证码,可以再次点击.实现倒计时的方法很多,我们今天就通过继承android.os.CountDownTimer类来实现! 首先看下我们封装的倒计时工具类,主要为了在多个地方用到的话,用了多个构造方法,就是为了使用更灵活,只要传入对数就可以调用了: public class MyCountTimer

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

君子欲讷于言而敏于行.-<论语> 最近身体有点不适,才注意到身体真的是最重要的,以后不管我们有多忙,一定要按时休息,坚持跑步,锻炼身体,做些颈椎的操等等,不要让我们挣的钱拿来看病,大家一起来坚持啊,不要让年轻蒙蔽了我们的双眼. 在Android开发之属于你的短信验证码(一)我们主要讲了聚合数据,以及使用聚合数据开发短信验证码的准备工作及配置,这一篇我们将带来完整的功能的实现,以及界面UI的实现.如有谬误欢迎批评指正,如有疑问欢迎留言,谢谢 首先我们来看下界面第一个界面 我们在这个界面输入手机号