今天主要实现了登录注册功能的客户端和服务端,但由于短信接口调用出现问题,导致注册功能还不完整。

截止到今天,APP的功能已经基本完成,后续还会陆陆续续的完善各功能模块与服务端的交互,因为需要和云端关联的模块与细节太多,所以就不具体规定时间完成。

在以往的学习和开发中并没有用到多少第三方的依赖。今天记录一下基于mob的Android 短信接口的使用代码。

首先注册监听回调:

EventHandler eh=new EventHandler(){
@Override
public void afterEvent(int event, int result, Object data) {
// TODO 此处不可直接处理UI线程,处理后续操作需传到主线程中操作
Message msg = new Message();
msg.arg1 = event;
msg.arg2 = result;
msg.obj = data;
handler.sendMessage(msg); }
};
//注册一个事件回调监听,用于处理SMSSDK接口请求的结果
SMSSDK.registerEventHandler(eh);

然后给获取验证码按钮添加点击监听:

getcode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String mobile = fusername.getText().toString();
if(InputFormat.isMobile(mobile)){
Log.v("mobile", mobile);
new AlertDialog.Builder(SigninActivity.this)
.setTitle("发送短信")
.setMessage("我们将把验证码发送到以下号码:\n"+"+86:"+mobile)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SMSSDK.getVerificationCode("86", mobile);
getcode.setClickable(false);
getcode.setBackgroundResource(R.drawable.btn_unclick_style);
getcode.setText("重新发送(" + i + ")");
new Thread(new Runnable()
{
@Override
public void run()
{
for (; i > 0; i--)
{
handler.sendEmptyMessage(-9);
if (i <= 0)
{
break;
}
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
handler.sendEmptyMessage(-8);
}
}).start();
}
})
.create()
.show();
} }
});

然后构造一个处理器用来处理返回的请求参数:

Handler handler = new Handler() {
@Override
public void handleMessage(@NonNull Message msg) {
if (msg.what == -9) {
getcode.setText("重新发送(" + i + ")");
} else if (msg.what == -8) {
getcode.setText("获取验证码");
getcode.setBackgroundResource(R.drawable.log_btn_style);
getcode.setClickable(true);
i = 30;
} else {
int i = msg.arg1;
int i1 = msg.arg2;
Object o = msg.obj;
Log.v("iandi1",i+" "+i1);
if (i1 == SMSSDK.RESULT_COMPLETE) {
// 短信注册成功后,返回MainActivity,然后提示
if (i == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
Toast.makeText(SigninActivity.this, "提交验证码成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(SigninActivity.this, LoginActivity.class);
Bundle bundle = new Bundle();
bundle.putString("username", fusername.getText().toString().trim());
intent.putExtras(bundle);
startActivity(intent); } else if (i == SMSSDK.EVENT_GET_VOICE_VERIFICATION_CODE) {
Toast.makeText(SigninActivity.this, "正在获取验证码", Toast.LENGTH_SHORT).show();
}
}
}
}
};

虽然已经算是简单的实现了一个小demo,但是Android要学的东西还是很多。作为第一个练习demo,以后还会在学习过程中不断的完善它。

由于后期可能会用来申请软件著作权,就不开源了哈哈哈。如果有技术需要请私信。

Android实战项目——家庭记账本(七)的更多相关文章

  1. Android实战项目——家庭记账本设计思路

    经过三周左右的Android学习,实感只有上手开发才能有所提高.在此打算做一个家庭记账APP,同时巩固一下学到的东西并且弥补漏洞. 概述 记账是自古以来人类必不可少的一件事,从古代的算盘,到手写账本, ...

  2. Android实战项目——家庭记账本(一)

    今天是家庭记账本APP开发的第一天,主要是做了一部分UI设计,不得不说,虽然web开发和Android开发有很多相似的地方,但是一个Android APP是很难三个小时开发完成的. 通过今天的学习与开 ...

  3. Android实战项目——家庭记账本(六)

    今天完成的主要任务如下: 1.设置页功能的布局 2.云服务器的部署 3.成功将一个本地Javaweb项目部署到阿里云 没什么特别说明的,直接上图: 首先是侧边栏功能的布局:               ...

  4. Android实战项目——家庭记账本(五)

    今天博客写的有点晚(好像算是昨天的了),有一点小bug刚刚改完.今天完成的任务有: 1.统计页的布局和功能 2.主页碎片的图表功能 实现效果如下:                      其中,统计 ...

  5. Android实战项目——家庭记账本(四)

    今天是开发的第四天,完成的主要内容如下: 1.账单查询功能的完善以及查询结果的显示和编辑 2.侧边栏布局的实现 3.首页fragment中本月与上月对比账目情况 实现的效果如图: 已添加的账单内容以及 ...

  6. Android实战项目——家庭记账本(三)

    今天完成的主要内容有: 1.主页面账单明细部分细节展示 2.对每个列表项,点击打开新的可编辑修改具体页面 3.实现了搜索页面的UI布局 4.优化了部分页面的UI,提升用户视觉和使用体验 实现效果如下: ...

  7. Android实战项目——家庭记账本(二)

    今天主要是对昨天做的添加账单信息的功能做了完善,实现了数据库的相关操作,如图是对已添加的账单信息的总结显示. 目前实现了通过日期进行汇总的功能,如上图中的各项item就是通过对所有账单信息进行按日期汇 ...

  8. .NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程

    写在前面 这篇我们对用户权限进行极简设计并保留其扩展性.首先很感谢大家的阅读,前面六章我带着大家快速入门了ASP.NET Core.ASP.NET Core的启动过程源码解析及配置文件的加载过程源码解 ...

  9. Android实战项目:房贷计算器

    APP源码已上传到我的GitHub:https://github.com/zdm-code/Android-learning/tree/master/android_learning/mortgage ...

随机推荐

  1. linux容器技术和Docker

    linux容器技术和Docker 概述 Docker在一定程度上是LXC的增强版,早期的Docker使用LXC作为容器引擎,所以也可以说Docker是LXC的二次封装发行版,目前docker使用的容器 ...

  2. 从桌面到Web - 领域模型的创建

    天佑武汉,天佑中国.这次为全国人民作出巨大牺牲的武汉人是坚强和担当的. 这次疫情期间的自我隔离的一个副作用是第一次享受这个超长假期,本来想好好学习一下Web技术的,但家里的唯一一台计算机被占用,不得已 ...

  3. Nginx进阶

    常见的web架构 LAMP - Linux +Apache +MySQL + PHP LNMP - Linux +Nginx + Mysql + PHP RHEL开源  Linux系统  RHEL C ...

  4. 使用 web3D 技术的风力发电场展示

    前言    风能是一种开发中的洁净能源,它取之不尽.用之不竭.当然,建风力发电场首先应考虑气象条件和社会自然条件.近年来,我国海上和陆上风电发展迅猛.海水.陆地为我们的风力发电提供了很好地质保障.正是 ...

  5. 含源码解析,深入Java 线程池原理

    从池化技术到底层实现,一篇文章带你贯通线程池技术. 1.池化技术简介 在系统开发过程中,我们经常会用到池化技术来减少系统消耗,提升系统性能. 在编程领域,比较典型的池化技术有: 线程池.连接池.内存池 ...

  6. 安装node,vue编译环境

    1.安装npm:wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bashnvm inst ...

  7. 设计模式-05建造者模式(Builder Pattern)

    1.模式动机 比如我们要组装一台电脑,都知道电脑是由 CPU.主板.内存.硬盘.显卡.机箱.显示器.键盘和鼠标组成,其中非常重要的一点就是这些硬件都是可以灵活选择,但是组装步骤都是大同小异(可以组一个 ...

  8. CassandraAppender - distributed logging,分布式软件logback-appender

    农历年最后一场scala-meetup听刘颖分享专业软件开发经验,大受启发.突然意识到一直以来都没有完全按照任何标准的开发规范做事.诚然,在做技术调研和学习的过程中不会对规范操作有什么严格要求,一旦技 ...

  9. vs2012 编译 zlib 1.2.8

    1. 下载     http://zlib.net/zlib-1.2.8.tar.gz 2. 编译     - 解压到目录,如d:\library     - 开启VS2012的Command Pro ...

  10. 消息中间件面试题31道RabbitMQ+ActiveMQ+Kafka

    消息中间件面试题31道RabbitMQ+ActiveMQ+Kafka 前言 文章开始前,我们先了解一下什么是消息中间件? 什么是中间件? 非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的, ...