跳转到主内容
极星编程网:以代码为星,赴技术山海!

Android如何通过手机获取验证码来完成注册功能

注册很多app或者网络账户的时候,经常需要手机获取验证码,来完成注册,那时年少,只是觉得手机获取验证码这件事儿很好玩,并没有关心太多,她是如何实现的,以及她背后的故事到底是什么样子的,现在小编接手的这个项目里面,就需要通过手机号进行注册,并且手机号发送相应的验证码,来完成注册,那么在一些应用app里面到底是如何实现点击按钮获取验证码,来完成注册这整个流程的呢?今天小编就以注册为例,和小伙伴们分享一下,如何通过手机号获取验证码来完成注册的一整套流程以及如何采用正则表达式来验证手机号码是否符合电信、移动、联通的规范。

首先我们需要做的第一步就是ApiClient里面编写获取验证码的方法,具体代码如下:

/*** 说明:获取验证码* 作者:丁国华* 时间:2015-8-27 下午5:47:36*/ public static String getValidateCode(AppContext appContext,Map map) throws AppException {// 定义要访问的接口和要强转的实体String validateUrl = _MakeURL(URLs.VALIDATE_CODE_URL, map);ValidateCode validateCode = null;try {// 获取服务器端Json数据String json = http_get(appContext, validateUrl);

// 解析为制定的实体对象validateCode = (ValidateCode) JSON.parseObject(json,ValidateCode.class);

} catch (Exception e) {if (e instanceof AppException) throw (AppException) e;throw AppException.network(e);}

// 返回验证码return validateCode.getCode();} 第二步编写AppContent里面的接口方法,具体代码如下所示:

/*** 说明:获取服务器验证码(不需要缓存)

* 作者:丁国华* @date 2015-8-28 上午9:07:14*/ public String getCode(Map map) throws AppException {

String validateCode = "";

// 如果网络可连接且解析无误返回正确的验证码,否则返回空字符串if (isNetworkConnected()) {try {validateCode = ApiClient.getValidateCode(this, map);} catch (AppException e) {if (validateCode == "") {throw e;}}}return validateCode;} 第三步,在StringUtils里面编写验证号码是否是手机号的正则表达式,具体代码如下:

/* 说明:移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188* 联通:130、131、132、152、155、156、185、186* 电信:133、153、180、189* 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9* 验证号码 手机号 固话均可* 作者:丁国华* 2015年9月20日 13:52:35*/ public static boolean isPhoneNumberValid(String phoneNumber) {boolean isValid = false;String expression = "((^(13|15|18)[0-9]{9}$)|(^0[1,2]{1}\\d{1}-?\\d{8}$)|(^0[3-9] {1}\\d{2}-?\\d{7,8}$)|(^0[1,2]{1}\\d{1}-?\\d{8}-(\\d{1,4})$)|(^0[3-9]{1}\\d{2}-? \\d{7,8}-(\\d{1,4})$))";CharSequence inputStr = phoneNumber;Pattern pattern = Pattern.compile(expression);Matcher matcher = pattern.matcher(inputStr);if (matcher.matches() ) {isValid = true;}return isValid;} 第四步:编写xml里面的文件,具体代码如下所示:

相关文章