• 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("我们将把验证码发送到以下号码:
    "+"+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,以后还会在学习过程中不断的完善它。

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

  • 相关阅读:
    Notepad++使用-如何导出/导入配置文件
    浏览器清除页面JS文件缓存的方法
    如何搭建一个简易的Web框架
    Visual Studio Code插件Code Runner中文乱码问题
    【笔记】做一个winform时遇到的坑
    【笔记】使用腾讯地图坐标转换
    使用js检测用户是否在用微信浏览器浏览网站
    phonegap+百度地图导航(JS版)
    浮躁的人
    【笔记】自动生成一个不重复的字符串
  • 原文地址:https://www.cnblogs.com/zdm-code/p/12289268.html
Copyright © 2020-2023  润新知