zoukankan      html  css  js  c++  java
  • 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,以后还会在学习过程中不断的完善它。

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

  • 相关阅读:
    Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query
    Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了
    Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述
    Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries
    Elasticsearch date 类型详解
    python 历险记(五)— python 中的模块
    python 历险记(四)— python 中常用的 json 操作
    python 历险记(三)— python 的常用文件操作
    Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI
    Elasticsearch Java Rest Client API 整理总结 (一)——Document API
  • 原文地址:https://www.cnblogs.com/zdm-code/p/12289268.html
Copyright © 2011-2022 走看看