Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發之MOB短信驗證SDK的使用(二)

Android開發之MOB短信驗證SDK的使用(二)

編輯:關於Android編程

我已經介紹了如何快速集成MOB短信驗證SDK,那今天我們講什麼呢?我們今天講一下如何不使用SDK中的GUI界面。對!我們今天來學習怎麼自定義GUI,說的直白點就是自定義界面並把開發中所要用的接口綁定到自定義界面的控件上。

首先,我們還是看一下SDK中為我們提供了那些靜態方法(這說明了我們只要類點方法名,對應傳參就行了)?

1初始化接口

1.1 initSDK(Context context, String appkey, String appSecrect) 初始化SDK,單例,可以多次調用;任何方法調用前,必須先初始化 屌絲我放在了application中 全局性質 (初始化有用)

1.2 registerEventHandler(EventHandler handler) 注冊回調接口 這個我放在了要用的activity的oncreate()方法裡 注意這是回掉,如果不用handler的消息機制是會報錯的 它會提示你create一個handler去解決這個問題 後面會講到土司不能在這裡面寫 (注測要用的)

1.3 unregisterEventHandler(EventHandler handler)注銷回調接口 都說注銷 意思就是destory() 我放在activity的onDestory()裡 (注銷也要用的 不然會內存溢出 OOM了)

2.短信驗證碼接口

2.1getSupportedCountries()獲取短信目前支持的國家列表 (一般我們做的是國內項目,外國項目很少會用到這個 默認直接傳字符串“ 86” 這裡指的是中國 基本不需要用 直接傳值,看需求吧)

2.2getVerificationCode(String country, String phone)請求獲取短信驗證碼(這個也要用的 我們做短信驗證不可缺少啊 )

2.3submitVerificationCode(String country, String phone, String code)提交短信驗證碼 (這個就是提交驗證碼並驗證 我這裡用的是MOB的智能驗證,所以在客戶端沒顯示 有用的)

3.用戶接口

3.1submitUserInfo(String uid, String nickname, String avatar, String country, String phone)提交用戶信息 (有用的 就是提交到自己的服務器上)

3.2getNewFriendsCount()獲取應用內新增加的好友數(感覺沒啥用 看需求吧)

3.3getFriendsInApp()獲取應用內的好友列表 (上同)

4.語音驗證接口

4.1getVoiceVerifyCode(String phone , String country)請求語音驗證碼2.0.0以下版本 (高科技的樣子,我們初次注冊點餐軟件時好像用過,沒啥用 看需求)

4.2getVoiceVerifyCode(String country,String phone)請求語音驗證碼2.0.0與之後的 (上同)

 

這些接口 從上往下的順序去使用就行了

基本思路就是

1.初始化接口 就是基本的接口進行配置

2.我要做什麼功能呢?對,我們要短信驗證啊 那就調短信請求接口

3.我們得到短信了,那我們要干啥?驗證呀!

4.驗證完,我們這個用戶的信息我們是不是要保存下來啊 那就提交服務器咯

接下來我們看代碼

看著上面的思路:

1.我們要初始化吧,勢必要初始化接口那就application裡初始化咯

 

package com.example.boom.messageproject.application;

import android.app.Application;

import cn.smssdk.SMSSDK;

/**
 * Created by Boom on 2016/8/1.
 */
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SMSSDK.initSDK(this, "你的key", "你的密鑰");
    }
}
2.那我們要用這個東西吧,就要注冊吧!

 

 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.regeister);
        //注冊短信回調
        SMSSDK.registerEventHandler(new EventHandler() {
            @Override
            public void afterEvent(int event, int result, Object data) {
                Message msg = Message.obtain();
                msg.arg1 = event;
                msg.arg2 = result;
                msg.obj = data;
                handler.sendMessage(msg);
            }
        });
        findViewId();
        init();
    }
3.注冊完,我們千萬不要忘記要注銷 那麼我們現在就寫好,以免之後忘了

 

 

   @Override
    protected void onDestroy() {
        super.onDestroy();
        SMSSDK.unregisterAllEventHandler();
    }

4.初始化完了,我們就要請求驗證碼咯,為了達到平常那種驗證碼的效果 這裡我寫了個計時器 然後調用

 

 

 //計時器
    private CountDownTimer timer = new CountDownTimer(60000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            btnView.setText((millisUntilFinished / 1000) + "秒後可重發");
        }

        @Override
        public void onFinish() {
            btnView.setEnabled(true);
            btnView.setText("獲取驗證碼");
        }
    };
調用時:

 

 

  case R.id.get_btn:
                btnView.requestFocus();
                if (vaildateinfo()) {
                    //啟動獲取驗證碼 86是中國
                    String zh=csed1.getText().toString().trim();
                    SMSSDK.getVerificationCode("86", zh);
                    timer.start();
                }
                break;
其中還有手機號和密碼的驗證 其中葉子定義了待刪除圖片的EditText

 

 

 //驗證注冊信息
    private boolean vaildateinfo() {
        csed1 = (EditText) findViewById(R.id.csed1);
        csed2 = (EditText) findViewById(R.id.csed2);
       String zh = csed1.getText().toString().trim();
        String pwd = csed2.getText().toString().trim();
        //首先要判斷是否為空
        if (!zh.equals("") || null != zh) {
            if (zh.length() == 11) {
                if (!pwd.equals("") || null != pwd) {
                    if (pwd.length() == 8) {
                        return true;
                    } else {
                        Toast.makeText(Regeister.this, "密碼不足8位", Toast.LENGTH_SHORT).show();
                        csed2.requestFocus();
                    }
                } else {
                    Toast.makeText(Regeister.this, "密碼不能為空", Toast.LENGTH_SHORT).show();
                    csed2.requestFocus();
                }
            } else {
                Toast.makeText(Regeister.this, "手機號不足11位", Toast.LENGTH_SHORT).show();
                csed1.requestFocus();
            }
        } else {
            Toast.makeText(Regeister.this, "手機號不能為空", Toast.LENGTH_SHORT).show();
            csed1.requestFocus();
        }
        return false;
    }
帶刪除按鈕的EditText,這裡就不介紹了 之前寫過,看前面寫的博客

 

5.獲取驗證碼後,驗證驗證碼。我們要把得到的驗證碼填到編輯域吧(當然,手動填寫是不是感覺已經out了 我們也可以自定義廣播,攔截這樣的信息 自動填入文本框中 這種效果很友好,後期我會講到,我們先用老方法)

 

    //驗證 驗證碼
    private void vaildatePassword() {
        String code = vaildatepwd.getText().toString().trim();
        String zh=csed1.getText().toString().trim();
        SMSSDK.submitVerificationCode("86", zh, code);
        putUserInfo("86", zh);
    }

 

XML文件代碼如下:

 




    

        

            

            
        

        

            

            
        

        

            

            
        
java代碼:

 

 

package com.example.boom.messageproject.activity;

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.boom.messageproject.R;

import java.util.Random;

import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

/**
 * Created by Boom on 2016/8/2.
 */
public class Regeister extends Activity implements View.OnClickListener {
    private static final String[] AVATARS = new String[400];
    TextView btnView;
    EditText csed1 = null, csed2 = null;
    EditText vaildatepwd = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.regeister);
        //注冊短信回調
        SMSSDK.registerEventHandler(new EventHandler() {
            @Override
            public void afterEvent(int event, int result, Object data) {
                Message msg = Message.obtain();
                msg.arg1 = event;
                msg.arg2 = result;
                msg.obj = data;
                handler.sendMessage(msg);
            }
        });
        findViewId();
        init();
    }

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int event = msg.arg1;
            int result = msg.arg2;
            Object data = msg.obj;
            if (result == SMSSDK.RESULT_COMPLETE) {
                //回調完成
                Toast.makeText(Regeister.this, "回調完成", Toast.LENGTH_SHORT).show();
                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                    //提交驗證碼成功
                    Toast.makeText(Regeister.this, "提交驗證碼成功", Toast.LENGTH_SHORT).show();
                } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                    //獲取驗證碼成功
                    Toast.makeText(Regeister.this, "獲取驗證碼成功", Toast.LENGTH_SHORT).show();
                } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
                    //返回支持發送驗證碼的國家列表
                    Toast.makeText(Regeister.this, "返回支持發送驗證碼的國家列表", Toast.LENGTH_SHORT).show();
                }
            } else {
                //回調失敗
                ((Throwable) data).printStackTrace();
            }
        }
    };

    private void findViewId() {
        btnView = (TextView) findViewById(R.id.get_btn);
        vaildatepwd = (EditText) findViewById(R.id.vaildatepwd);

    }

    private void init() {
        btnView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            //點擊獲取驗證碼控件
            case R.id.get_btn:
                btnView.requestFocus();
                if (vaildateinfo()) {
                    //啟動獲取驗證碼 86是中國
                    String zh = csed1.getText().toString().trim();
                    SMSSDK.getVerificationCode("86", zh);
                    timer.start();
                }
                break;
            //點擊提交信息按鈕
            case R.id.rgs_btn:
                VaildateputInfo();
                break;

        }
    }

    /**
     * 1.驗證驗證碼
     * 2.提交用戶信息
     */
    private void VaildateputInfo() {
        vaildatePassword();
    }

    //驗證 驗證碼
    private void vaildatePassword() {
        String code = vaildatepwd.getText().toString().trim();
        String zh = csed1.getText().toString().trim();
        SMSSDK.submitVerificationCode("86", zh, code);
        putUserInfo("86", zh);
    }

    //提交用戶信息
    private void putUserInfo(String country, String phone) {
        Random rnd = new Random();
        int id = Math.abs(rnd.nextInt());
        String uid = String.valueOf(id);
        String nickName = "SmsSDK_User_" + uid;
        String avatar = AVATARS[id % 12];
        SMSSDK.submitUserInfo(uid, nickName, avatar, country, phone);
    }

    //計時器
    private CountDownTimer timer = new CountDownTimer(60000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            btnView.setText((millisUntilFinished / 1000) + "秒後可重發");
        }

        @Override
        public void onFinish() {
            btnView.setEnabled(true);
            btnView.setText("獲取驗證碼");
        }
    };

    @Override
    protected void onDestroy() {
        super.onDestroy();
        SMSSDK.unregisterAllEventHandler();
    }

    //驗證注冊信息
    private boolean vaildateinfo() {
        csed1 = (EditText) findViewById(R.id.csed1);
        csed2 = (EditText) findViewById(R.id.csed2);
        String zh = csed1.getText().toString().trim();
        String pwd = csed2.getText().toString().trim();
        //首先要判斷是否為空
        if (!zh.equals("") || null != zh) {
            if (zh.length() == 11) {
                if (!pwd.equals("") || null != pwd) {
                    if (pwd.length() == 8) {
                        return true;
                    } else {
                        Toast.makeText(Regeister.this, "密碼不足8位", Toast.LENGTH_SHORT).show();
                        csed2.requestFocus();
                    }
                } else {
                    Toast.makeText(Regeister.this, "密碼不能為空", Toast.LENGTH_SHORT).show();
                    csed2.requestFocus();
                }
            } else {
                Toast.makeText(Regeister.this, "手機號不足11位", Toast.LENGTH_SHORT).show();
                csed1.requestFocus();
            }
        } else {
            Toast.makeText(Regeister.this, "手機號不能為空", Toast.LENGTH_SHORT).show();
            csed1.requestFocus();
        }
        return false;
    }

}
效果如下

 

\
\
 

 

 

 


 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved