Android实战项目——家庭记账本(七)

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

截止到今天,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,以后还会在学习过程中不断的完善它。

原文地址:https://www.cnblogs.com/zdm-code/p/12289268.html

时间: 2024-10-08 03:09:22

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

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

今天完成的主要内容有: 1.主页面账单明细部分细节展示 2.对每个列表项,点击打开新的可编辑修改具体页面 3.实现了搜索页面的UI布局 4.优化了部分页面的UI,提升用户视觉和使用体验 实现效果如下:          今天把明细内容的思路改了,主要还是因为网上的解决办法不足以支持我的代码运行,权衡之后,决定把日结放到统计页,因为单ListView无嵌套情况下没有出过问题. 明天要实现的内容有,侧边栏的布局及部分功能,完善账单查询功能. 原文地址:https://www.cnblogs.com/

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

今天是开发的第四天,完成的主要内容如下: 1.账单查询功能的完善以及查询结果的显示和编辑 2.侧边栏布局的实现 3.首页fragment中本月与上月对比账目情况 实现的效果如图: 已添加的账单内容以及最近两月对比如下: 侧边栏样式如下(貌似图片有点失真,设备上白色背景区域分割线是均衡的): 查询页面如下: 按当前条件查询结果如下(可以对比首页已添加内容),查询结果可按日折叠:            下面更换查询条件:             下面再更换查询方式:             以上就是

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

今天博客写的有点晚(好像算是昨天的了),有一点小bug刚刚改完.今天完成的任务有: 1.统计页的布局和功能 2.主页碎片的图表功能 实现效果如下:                      其中,统计功能的个人分析部分可以按照不同的条件进行统计,条件的选择在顶部的下拉按钮样式处,可以按周.按月.按年以及自定义日期段进行统计,逐月对比功能类似,只不过只能选中指定年份,然后对每个月的具体收支进行分析. 以上是今天实现的所有内容.最大的收获就是学会了hellocharts的基本使用. 顺便记录一下今天

Android开源项目分类汇总(七)优秀项目

第三部分 优秀项目 主要介绍那些Android还不错的完整项目,目前包含的项目主要依据是项目有意思或项目分层规范比较好. Linux 项目地址:https://github.com/torvalds/linux Android 项目地址:https://android.googlesource.com/ 或 https://github.com/android 以上两个项目,不解释 (1) ZXing 二维码扫描工具 项目地址:https://github.com/zxing/zxing 或 h

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

写在前面 这篇我们对用户权限进行极简设计并保留其扩展性.首先很感谢大家的阅读,前面六章我带着大家快速入门了ASP.NET Core.ASP.NET Core的启动过程源码解析及配置文件的加载过程源码解析并引入依赖注入的概念.Git的快速入门.Dapper的快速入门.Vue的快速入门.不知道大伙掌握的怎么样了!如果你有兴趣的话可以加入我们的.NET Core实战项目群637326624跟更多的小伙伴共同进行交流下. 接下来我们就正式进入.NET Core实战项目之CMS的设计篇了.在设计篇呢,我们

Android实战项目:房贷计算器

APP源码已上传到我的GitHub:https://github.com/zdm-code/Android-learning/tree/master/android_learning/mortgage 如今楼市可真是疯狂,房价蹭蹭的坐火箭飞涨,说到买房,自然少不了房贷,根据不同的贷款方式与还款方式,计算出来的月供数额各不相同,如果手机上有个房贷计算器,那可真是帮了不少人的忙.接下来就让我们瞅瞅这货好不好使 虽说Android进度并不算太多,但是根据迄今为止学到的开发知识,足够写个房贷计算器APP

Android实战——jsoup实现网络爬虫,糗事百科项目的起步

Android实战--jsoup实现网络爬虫,爬糗事百科主界面 本篇文章包括以下内容: 前言 jsoup的简介 jsoup的配置 jsoup的使用 结语 前言 对于Android初学者想要做项目时,最大的烦恼是什么?毫无疑问是数据源的缺乏,当然可以选择第三方接口提供数据,也可以使用网络爬虫获取数据,这样就不用第三方数据作为支持.本来是打算爬一些购物网站的数据,由于他们的反爬做得好,所以没办法爬到数据,只能爬取糗事百科的数据,或许聪明的你会想到可以高仿个糗事百科作为自己的练手项目,利用jsoup是

Android实战技巧之二十七:Maven编译开源二维码扫描项目zxing

拥有自己的手机软件工具箱是件非常有意义的事情.就目前国内Android的生态环境来说,混乱的不能再乱了.由于我们登录不了官网App商店,下软件就只好在国内五花八门的软件市场下载.由于这些市场的监管不力,什么样的软件都有,就拿二维码扫描软件来说,好多都带那种狗皮膏药一样的广告插件,真是特别讨厌. 在开源世界中有很多优秀的软件,其中zxing就是非常好的Android扫碼工具软件.我们可以拿来即用还可以学习内部机制,然后做些定制化个性化.既可以自己享用,又可以跟大家分享.真是不错. zxing在gi

Android网络编程-登陆实战项目(一)

通过编写客户端,服务器端代码完成一个Android登陆实战项目 项目分为6个部分 服务器:Servlet 客户端:Activity(界面) 客户端:Thread和Handler 客户端:HttpClient-HttpGet 客户端:HttpClient-HttpPost 客户端也就是我们的手机客户端 第一部分 .服务器:Servlet 服务器端用的开发工具MyeclipseforSpring+tomcat8,主要用的是Jsp+Servlet构建项目. 第一步:新建一个java_web项目 第二部