SMSSDK for Android 實(shí)現(xiàn)發(fā)送短信及解析

1. 配置完以后,在注冊(cè)activity的onCreate()方法中先進(jìn)行eventHandler的注冊(cè)餐禁。

個(gè)人理解诵肛,eventHandler就是對(duì)短信驗(yàn)證進(jìn)行監(jiān)聽(tīng),在進(jìn)行相應(yīng)的操作后箱蟆,實(shí)現(xiàn)相應(yīng)的UI更新和回調(diào)操作沟绪。

eventHandler中可以重寫(xiě)四個(gè)回調(diào)方法。

其中onRegister在回調(diào)對(duì)象注冊(cè)的時(shí)候被觸發(fā)空猜。beforeEvent在操作執(zhí)行前被觸發(fā)绽慈,其參數(shù)event表示操作的類(lèi)型,data是從外部傳入的數(shù)據(jù)辈毯。afterEvent在操作結(jié)束時(shí)被觸發(fā)坝疼,同樣具備event和data參數(shù),但是data是事件操作結(jié)果谆沃,其具體取值根據(jù)參數(shù)result而定裙士。

一般情況是用afterEvent實(shí)現(xiàn)回調(diào)。

result表示操作結(jié)果管毙,會(huì)返回兩種值:

SMSSDK.RESULT_COMPLETE:表示操作成功腿椎。

SMSSDK.RESULT_ERROR:表示操作失敗。

event表示操作類(lèi)型夭咬,會(huì)返回兩個(gè)值:

EVENT_GET_VERIFICATION_CODE:表示發(fā)送成功啃炸。

EVENT_SUBMIT_VERIFICATION_CODE:表示驗(yàn)證成功。(在開(kāi)發(fā)平臺(tái) “短信設(shè)置” 里面設(shè)置取消智能驗(yàn)證卓舵,才會(huì)發(fā)送短信南用,否則不會(huì)發(fā)送短信)

eventHandler=newEventHandler() {

@Override

public void? afterEvent(intevent,intresult, Object data) {

/**

* 短信驗(yàn)證后,返回主線程進(jìn)行UI操作

*/

????????????????Message message =newMessage();

????????????????message.what=SMSSDK_TEST_RESPONSE;

????????????????message.arg1= event;

????????????????message.arg2= result;

????????????????message.obj= data;

????????????????handle.sendMessage(message);

????}

};

//注冊(cè)eventHandler

SMSSDK.registerEventHandler(eventHandler);


2.發(fā)送短信:

SMSSDK.getVerificationCode("86",etRegisterUserName

.getText().toString());

參數(shù)1: 區(qū)號(hào)掏湾,中國(guó)是“86”

參數(shù)2:11位手機(jī)號(hào)裹虫。

3.驗(yàn)證短信:

SMSSDK.submitVerificationCode("86",mPhoneString,

etIdentifyCode.getText().toString());

參數(shù)1: 區(qū)號(hào)

參數(shù)2: 手機(jī)號(hào)

參數(shù)3: 驗(yàn)證碼

4.對(duì)于發(fā)送以后和驗(yàn)證后的響應(yīng)操作

? ? 1.由于UI操作要在主線程中進(jìn)行,所以對(duì)于eventHandler在子線程中的afterEvent方法融击,應(yīng)該使用Handler返回主線程進(jìn)行相應(yīng)的操作筑公。

? ? 2.在發(fā)送驗(yàn)證碼后發(fā)送handler來(lái)讓按鈕變成記錄秒數(shù)狀態(tài)(即多少秒后可以重新發(fā)送),用線程實(shí)現(xiàn)

? ? 3.秒數(shù)結(jié)束尊浪,還原按鈕狀態(tài)

? ? 4.由于要和自己設(shè)計(jì)的服務(wù)器通信匣屡,所以在驗(yàn)證碼驗(yàn)證成功后封救,向自己服務(wù)器發(fā)起請(qǐng)求,判斷是否能夠注冊(cè)


//用于更新UI的句柄

privateHandlerhandle=newHandler(){

@Override

public voidhandleMessage(Message msg) {

switch(msg.what){

caseRESEND_MESSAGE_TIME_CHANGE_HANDLE:

//更新短信多少秒后可以發(fā)送

btnGetIdentifyCode.setText(messageSendTime+"s后可以重新發(fā)送");

btnGetIdentifyCode.setBackground(getResources().getDrawable(R.color.darkgray));

break;

caseRESEND_MESSAGE_HANDLE:

//按鈕變?yōu)榭牲c(diǎn)擊

btnGetIdentifyCode.setText("獲取驗(yàn)證碼");

btnGetIdentifyCode.setClickable(true);

btnGetIdentifyCode.setBackground(getResources().getDrawable(R.drawable.bt_register));

messageSendTime=60;

break;

caseSMSSDK_TEST_RESPONSE:

intevent = msg.arg1;

intresult = msg.arg2;

Object data = msg.obj;

//如果發(fā)送成功

if(result == SMSSDK.RESULT_COMPLETE){

Log.d("test_message","3");

//驗(yàn)證成功捣作,向服務(wù)器發(fā)送請(qǐng)求驗(yàn)證是否已注冊(cè)

if(event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE){

Log.d("test_message","4");

OkHttpUtils

.post()

.url(NET_URL_HEADER+"UserServlet")

.addParams("userName",mPhoneString)

.addParams("password",etRegisterPassword.getText().toString())

.addParams("age","0")

.addParams("phoneNumber",mPhoneString)

.addParams("method","addUser")

.build()

.execute(newStringCallback() {

@Override

public voidonError(Call call, Exception e,intid) {

e.printStackTrace();

Toast.makeText(RegisterActivity.this,"注冊(cè)異常",Toast.LENGTH_LONG).show();

}

@Override

public voidonResponse(String response,intid) {

if("注冊(cè)成功".equals(response)){

//如果服務(wù)器驗(yàn)證成功誉结,跳轉(zhuǎn)到主界面

Toast.makeText(RegisterActivity.this,"注冊(cè)成功",

Toast.LENGTH_SHORT).show();

Intent intent =newIntent(RegisterActivity.this,MainActivity.class);

Bundle bundle =newBundle();

//傳入用戶名

bundle.putString("userName",mPhoneString);

startActivity(intent);

finish();

}else if("已經(jīng)注冊(cè)".equals(response)){

//提示已經(jīng)注冊(cè)

Toast.makeText(RegisterActivity.this,"注冊(cè)失敗,該手機(jī)號(hào)已經(jīng)注冊(cè)",

Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(RegisterActivity.this,"注冊(cè)失敗!",

Toast.LENGTH_SHORT).show();

}

}

});

}else if(event == SMSSDK.EVENT_GET_VERIFICATION_CODE){

//驗(yàn)證碼已經(jīng)從服務(wù)器發(fā)出

Toast.makeText(RegisterActivity.this,"驗(yàn)證碼已發(fā)出,請(qǐng)注意查收", Toast.LENGTH_SHORT).show();

}else{

//驗(yàn)證碼輸入錯(cuò)誤

Toast.makeText(RegisterActivity.this,"驗(yàn)證碼輸入錯(cuò)誤券躁!", Toast.LENGTH_SHORT).show();

}

}else{

//發(fā)送失敗

Log.d("send_message","3");

Toast.makeText(RegisterActivity.this,"短信發(fā)送失敵涂印!",Toast.LENGTH_SHORT).show();

}

break;

default:

break;

}

}

};

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末也拜,一起剝皮案震驚了整個(gè)濱河市以舒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搪泳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扼脐,死亡現(xiàn)場(chǎng)離奇詭異岸军,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)瓦侮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)艰赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人肚吏,你說(shuō)我怎么就攤上這事方妖。” “怎么了罚攀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵党觅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我斋泄,道長(zhǎng)杯瞻,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任炫掐,我火速辦了婚禮魁莉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘募胃。我一直安慰自己旗唁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布痹束。 她就那樣靜靜地躺著检疫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祷嘶。 梳的紋絲不亂的頭發(fā)上电谣,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天秽梅,我揣著相機(jī)與錄音,去河邊找鬼剿牺。 笑死企垦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晒来。 我是一名探鬼主播钞诡,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼湃崩!你這毒婦竟也來(lái)了荧降?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤攒读,失蹤者是張志新(化名)和其女友劉穎朵诫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體薄扁,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剪返,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了邓梅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脱盲。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖日缨,靈堂內(nèi)的尸體忽然破棺而出钱反,到底是詐尸還是另有隱情,我是刑警寧澤匣距,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布面哥,位于F島的核電站,受9級(jí)特大地震影響毅待,放射性物質(zhì)發(fā)生泄漏幢竹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一恩静、第九天 我趴在偏房一處隱蔽的房頂上張望焕毫。 院中可真熱鬧,春花似錦驶乾、人聲如沸邑飒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)疙咸。三九已至,卻和暖如春风科,著一層夾襖步出監(jiān)牢的瞬間撒轮,已是汗流浹背乞旦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留题山,地道東北人兰粉。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像顶瞳,于是被迫代替她去往敵國(guó)和親玖姑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容