Android利用mob sdk手機(jī)號注冊、綁定手機(jī)號獲取短信驗(yàn)證碼實(shí)例

本文寫了一個(gè)常見的功能——手機(jī)app中注冊或綁定手機(jī)號的獲取驗(yàn)證碼的功能嫁佳,也就是短信驗(yàn)證功能

具體效果就是挨队,你在注冊界面填寫手機(jī)號,點(diǎn)擊獲取驗(yàn)證碼按鈕蒿往,---然后會收到驗(yàn)證短信盛垦,填入驗(yàn)證碼后點(diǎn)擊注冊按鈕,如果驗(yàn)證正確就可以跳轉(zhuǎn)到另外一個(gè)界面

1.mob官網(wǎng)下載對應(yīng)的sdk

2.將sdk作為一個(gè)library導(dǎo)入到你的項(xiàng)目中

具體代碼如下:

首先配置文件加入權(quán)限:

<uses-permission android:name="android.permission.READ_CONTACTS"/>?

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> ??

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

<uses-permission android:name="android.permission.READ_SMS"/>

<uses-permission android:name="android.permission.GET_TASKS"/>

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

然后聲明activity(固定格式無法修改)

<activity

android:name="cn.smssdk.SMSSDKUIShell"

android:configChanges="keyboardHidden|orientation|screenSize"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:windowSoftInputMode="stateHidden|adjustResize"/>

xml文件很簡單就不上傳了瓤漏,如圖:


注冊界面activity:

packagecom.example.administrator.mobregister;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.os.Message;

importandroid.text.TextUtils;

importandroid.util.Log;

importandroid.view.View;

importandroid.view.Window;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.Toast;

importcn.smssdk.EventHandler;

importcn.smssdk.SMSSDK;

public classRegisterActivityextendsActivityimplementsView.OnClickListener {

StringAPPKEY="101732155b605";

StringAPPSECRETE="69d1850f4b74100266ab576b64e6cb16";

//電話號碼輸入框

privateEditTextmPhoneEdt;

//驗(yàn)證碼輸入框

privateEditTextmCodeEdt;

//發(fā)送驗(yàn)證碼按鈕

privateButtonmCodeRequestBtn;

//注冊按鈕

privateButtonmRegisterBtn;

private inti=30;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_register);

init();

}

/**

* 初始化控件

*/

private voidinit() {

mPhoneEdt= (EditText) findViewById(R.id.input_phone_et);

mCodeEdt= (EditText) findViewById(R.id.input_code_et);

mCodeRequestBtn= (Button) findViewById(R.id.request_code_btn);

mRegisterBtn= (Button) findViewById(R.id.register_btn);

mCodeRequestBtn.setOnClickListener(this);

mRegisterBtn.setOnClickListener(this);

SMSSDK.initSDK(this,APPKEY,APPSECRETE);

EventHandler eventHandler =newEventHandler() {

@Override

public voidafterEvent(intevent, intresult,Object data) {

Message message =newMessage();

message.arg1= event;

message.arg2= result;

message.obj= data;

handler.sendMessage(message);

}

};

//注冊回調(diào)監(jiān)聽接口

SMSSDK.registerEventHandler(eventHandler);

}

@Override

public voidonClick(View view) {

String mIphone =mPhoneEdt.getText().toString();

switch(view.getId()) {

caseR.id.request_code_btn:

if(judgePhoneNums(mIphone)) {

SMSSDK.getVerificationCode("86",mIphone);

mCodeRequestBtn.setClickable(false);

mCodeRequestBtn.setText("重新發(fā)送("+i+")");

newThread(newRunnable() {

@Override

public voidrun() {

for(;i>0;i--) {

handler.sendEmptyMessage(1);

if(i<=0) {

break;

}

try{

Thread.sleep(1000);

}catch(InterruptedException e) {

e.printStackTrace();

}

}

handler.sendEmptyMessage(2);

}

}).start();

break;

}else{

}

break;

caseR.id.register_btn:

//將收到的驗(yàn)證碼和手機(jī)號提交再次核對

SMSSDK.submitVerificationCode("86",mIphone,mCodeEdt.getText().toString());

break;

}

}

/**

* 判斷手機(jī)號碼是否合理

*

*@paramphoneNums

*/

private booleanjudgePhoneNums(String phoneNums) {

if(isMatchLength(phoneNums,11)

&&isMobileNO(phoneNums)) {

return true;

}

Toast.makeText(this,"手機(jī)號碼輸入有誤腾夯!",Toast.LENGTH_SHORT).show();

return false;

}

/**

* 判斷一個(gè)字符串的位數(shù)

*

*@paramstr

*@paramlength

*@return

*/

public static booleanisMatchLength(String str, intlength) {

if(str.isEmpty()) {

return false;

}else{

returnstr.length() == length ?true:false;

}

}

/**

* 驗(yàn)證手機(jī)格式

*/

public static booleanisMobileNO(String mobileNums) {

/*

* 移動(dòng):134省撑、135、136俯在、137竟秫、138、139跷乐、150肥败、151、157(TD)愕提、158馒稍、159、187浅侨、188

* 聯(lián)通:130纽谒、131、132如输、152鼓黔、155、156不见、185澳化、186 電信:133、153稳吮、180缎谷、189、(1349衛(wèi)通)

* 總結(jié)起來就是第一位必定為1灶似,第二位必定為3或5或8列林,其他位置的可以為0-9

*/

String telRegex ="[1][358]\\d{9}";// "[1]"代表第1位為數(shù)字1,"[358]"代表第二位可以為3酪惭、5希痴、8中的一個(gè),"\\d{9}"代表后面是可以是0~9的數(shù)字撞蚕,有9位润梯。

if(TextUtils.isEmpty(mobileNums))

return false;

else

returnmobileNums.matches(telRegex);

}

Handlerhandler=newHandler() {

@Override

public voidhandleMessage(Message msg) {

if(msg.what==1) {

mCodeRequestBtn.setText("重新發(fā)送"+i+"s");

}else if(msg.what==2) {

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

mCodeRequestBtn.setClickable(true);

}else{

intevent = msg.arg1;

intresult = msg.arg2;

Object data = msg.obj;

Log.e("event","event="+ event);

if(result == SMSSDK.RESULT_COMPLETE) {

//回調(diào)完成

if(event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {

//提交驗(yàn)證碼成功

Toast.makeText(getApplicationContext(),"提交驗(yàn)證碼成功",

Toast.LENGTH_SHORT).show();

Intent intent =newIntent(RegisterActivity.this,

OkActivity.class);

startActivity(intent);

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

//獲取驗(yàn)證碼成功

Toast.makeText(getApplicationContext(),"正在獲取驗(yàn)證碼",

Toast.LENGTH_SHORT).show();

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

//返回支持發(fā)送驗(yàn)證碼的國家列表

}

}

}

}

};

@Override

protected voidonDestroy() {

SMSSDK.unregisterAllEventHandler();

super.onDestroy();

}

}




最后加上mob官網(wǎng),里面有詳細(xì)的說明甥厦。Mob官網(wǎng)網(wǎng)址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纺铭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子刀疙,更是在濱河造成了極大的恐慌舶赔,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谦秧,死亡現(xiàn)場離奇詭異竟纳,居然都是意外死亡撵溃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門锥累,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缘挑,“玉大人,你說我怎么就攤上這事桶略∮锾裕” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵际歼,是天一觀的道長惶翻。 經(jīng)常有香客問我,道長鹅心,這世上最難降的妖魔是什么吕粗? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮旭愧,結(jié)果婚禮上颅筋,老公的妹妹穿的比我還像新娘。我一直安慰自己榕茧,他們只是感情好垃沦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布客给。 她就那樣靜靜地躺著用押,像睡著了一般。 火紅的嫁衣襯著肌膚如雪靶剑。 梳的紋絲不亂的頭發(fā)上蜻拨,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音桩引,去河邊找鬼缎讼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛坑匠,可吹牛的內(nèi)容都是我干的血崭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼厘灼,長吁一口氣:“原來是場噩夢啊……” “哼夹纫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起设凹,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤舰讹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后闪朱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體月匣,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钻洒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锄开。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片素标。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖萍悴,靈堂內(nèi)的尸體忽然破棺而出糯钙,到底是詐尸還是另有隱情,我是刑警寧澤退腥,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布任岸,位于F島的核電站,受9級特大地震影響狡刘,放射性物質(zhì)發(fā)生泄漏享潜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一嗅蔬、第九天 我趴在偏房一處隱蔽的房頂上張望剑按。 院中可真熱鬧,春花似錦澜术、人聲如沸艺蝴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猜敢。三九已至,卻和暖如春盒延,著一層夾襖步出監(jiān)牢的瞬間缩擂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工添寺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胯盯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓计露,卻偏偏與公主長得像博脑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子票罐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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