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,以后还会在学习过程中不断的完善它。
由于后期可能会用来申请软件著作权,就不开源了哈哈哈。如果有技术需要请私信。