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

相关推荐