今天主要實現了登錄注冊功能的客戶端和服務端,但由於短信接口調用出現問題,導致注冊功能還不完整。
截止到今天,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,以后還會在學習過程中不斷的完善它。
由於后期可能會用來申請軟件著作權,就不開源了哈哈哈。如果有技術需要請私信。