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

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

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

首先注册监听回调:

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

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

  1. getcode.setOnClickListener(new View.OnClickListener() {
  2. @Override
  3. public void onClick(View view) {
  4. final String mobile = fusername.getText().toString();
  5. if(InputFormat.isMobile(mobile)){
  6. Log.v("mobile", mobile);
  7. new AlertDialog.Builder(SigninActivity.this)
  8. .setTitle("发送短信")
  9. .setMessage("我们将把验证码发送到以下号码:\n"+"+86:"+mobile)
  10. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  11. @Override
  12. public void onClick(DialogInterface dialog, int which) {
  13. SMSSDK.getVerificationCode("86", mobile);
  14. getcode.setClickable(false);
  15. getcode.setBackgroundResource(R.drawable.btn_unclick_style);
  16. getcode.setText("重新发送(" + i + ")");
  17. new Thread(new Runnable()
  18. {
  19. @Override
  20. public void run()
  21. {
  22. for (; i > 0; i--)
  23. {
  24. handler.sendEmptyMessage(-9);
  25. if (i <= 0)
  26. {
  27. break;
  28. }
  29. try
  30. {
  31. Thread.sleep(1000);
  32. } catch (InterruptedException e)
  33. {
  34. e.printStackTrace();
  35. }
  36. }
  37. handler.sendEmptyMessage(-8);
  38. }
  39. }).start();
  40. }
  41. })
  42. .create()
  43. .show();
  44. }
  45.  
  46. }
  47. });

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

  1. Handler handler = new Handler() {
  2. @Override
  3. public void handleMessage(@NonNull Message msg) {
  4. if (msg.what == -9) {
  5. getcode.setText("重新发送(" + i + ")");
  6. } else if (msg.what == -8) {
  7. getcode.setText("获取验证码");
  8. getcode.setBackgroundResource(R.drawable.log_btn_style);
  9. getcode.setClickable(true);
  10. i = 30;
  11. } else {
  12. int i = msg.arg1;
  13. int i1 = msg.arg2;
  14. Object o = msg.obj;
  15. Log.v("iandi1",i+" "+i1);
  16. if (i1 == SMSSDK.RESULT_COMPLETE) {
  17. // 短信注册成功后,返回MainActivity,然后提示
  18. if (i == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
  19. Toast.makeText(SigninActivity.this, "提交验证码成功", Toast.LENGTH_SHORT).show();
  20. Intent intent = new Intent(SigninActivity.this, LoginActivity.class);
  21. Bundle bundle = new Bundle();
  22. bundle.putString("username", fusername.getText().toString().trim());
  23. intent.putExtras(bundle);
  24. startActivity(intent);
  25.  
  26. } else if (i == SMSSDK.EVENT_GET_VOICE_VERIFICATION_CODE) {
  27. Toast.makeText(SigninActivity.this, "正在获取验证码", Toast.LENGTH_SHORT).show();
  28. }
  29. }
  30. }
  31. }
  32. };

虽然已经算是简单的实现了一个小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. 图像处理:AlphaBlend混合两张图片

    使用vs2017新建一个项目 混合A,B两张图的基础算法: outColor = srcColor * srcAlpha + destColor * (1 - srcAlpha) 输出颜色 = 源颜色 ...

  2. JS-04-流程控制和循环

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. Python 入门基本知识

    编码:是把机器语言翻译成人能看懂的语言 美国信息互换标准代码<<ASSIC>>这张表就是相当于语法表随着发展后面又出现了:gb2312  ——到——  gbk18030  AS ...

  4. mysqldump 备份与恢复操作记录

     一,参数详解 [root@bug ~]# ? mysqldump --master-data[=#] mysqldump导出数据时,当这个参数的值为1的时候,mysqldump出来的文件就会包括CH ...

  5. Kubernetes-Ingress资源详解

    什么是Ingress #阿里云称之为ingress路由!在 Kubernetes 集群中,主要用于接入外部请求到k8s内部,Ingress是授权入站连接到达集群服务的规则集合,为您提供七层负载均衡能力 ...

  6. python pip使用报错: Fatal error in launcher: Unable to create process using '"c:\python27\python.exe" "C:\Python27\Scripts\pip.exe" '

    在一个系统中,如果同时存在python2和python3,在cmd.exe程序下执行pip.pip2或者pip3均会报错. 如何解决: 如果是在python3环境下,使用pip安装扩展库,可以使用以下 ...

  7. Kafka系列3:深入理解Kafka消费者

    上面两篇聊了Kafka概况和Kafka生产者,包含了Kafka的基本概念.设计原理.设计核心以及生产者的核心原理.本篇单独聊聊Kafka的消费者,包括如下内容: 消费者和消费者组 如何创建消费者 如何 ...

  8. IniRealm讲解

    Shiro自定义Realm 内置Realm: user.ini [users] Mark=123456,admin [roles] admin=user:delete,user:update IniR ...

  9. 【python-leetcode713-双指针】乘积小于k的子数组

    问题描述: 给定一个正整数数组 nums. 找出该数组内乘积小于 k 的连续的子数组的个数. 示例 1: 输入: nums = [10,5,2,6], k = 100输出: 8解释: 8个乘积小于10 ...

  10. 11--Java--JDBC知识梳理

    JDBC 一.概述:JDBC(java database connection),使用java语言连接数据库,是java提供一套操作数据库的接口(标准),实现对数据库的统一访问,是一个java引用应用 ...