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,以后還會在學習過程中不斷的完善它。

由於后期可能會用來申請軟件著作權,就不開源了哈哈哈。如果有技術需要請私信。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM