生活随笔
收集整理的這篇文章主要介紹了
Android免费短信验证
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn)載請(qǐng)注明住處:http://blog.csdn.net/crazy1235/article/details/41912003
介紹
? ? ? ?短信驗(yàn)證功能大家都很熟悉了。在很多地方都能見(jiàn)到,注冊(cè)新用戶或者短息驗(yàn)證支付等。短信驗(yàn)證利用短信驗(yàn)證碼來(lái)注冊(cè)會(huì)員,大大降低了非法注冊(cè),很大程度上提高了用戶賬戶的安全性。
? ?目前市面上已經(jīng)有了很多提供短信驗(yàn)證的服務(wù)商,有收費(fèi)的,也有免費(fèi)的。如果是個(gè)人的開(kāi)發(fā)者,用免費(fèi)的是最劃算的了!下面我就介紹一個(gè)免費(fèi)的短信驗(yàn)證平臺(tái)---Mob.com
? ?Mob平臺(tái)提供的短信驗(yàn)證功能可以實(shí)現(xiàn)快速的驗(yàn)證和匹配通訊錄好友功能,并且能為每個(gè)app每天提供10000條免費(fèi)短信驗(yàn)證。很多開(kāi)發(fā)者都想在自己的app中集成短信驗(yàn)證功能,下面我們就來(lái)體驗(yàn)一下免費(fèi)的”快感“吧!
應(yīng)用
? ? ???1. 首先需要注冊(cè)成為mob平臺(tái)用戶,然后進(jìn)入控制中心中的【免費(fèi)短信驗(yàn)證碼SDK】,在界面上點(diǎn)擊【添加新應(yīng)用】添加自己的應(yīng)用。這一步驟完成之后,會(huì)給你提供一個(gè)AppKey和一個(gè)App Secret。需要把這兩個(gè)碼記下來(lái),下面有重要用處。
? ? ? ??2. 打開(kāi)網(wǎng)址http://sms.mob.com/Download)下載sdk。解壓之后如下圖:
?
? ? ? ?SMSSDK就是平臺(tái)提供的驗(yàn)證短信的SDK,sample文件夾是一個(gè)demo。
? ? ? ?3. 在ecliplse中導(dǎo)入這個(gè)sdk,作為一個(gè)library,然后把它作為一個(gè)庫(kù)引入到你自己的項(xiàng)目中。
? ? ? ??接下來(lái),需要在AndroidManifest.xml中添加如下smssdk需要的權(quán)限:
?
[html]?view plaincopy
<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.GET_TASKS"?/>??<uses-permission?android:name="android.permission.ACCESS_FINE_LOCATION"?/>?? ?
?
? ? ? ??在activity標(biāo)簽下添加如下信息:
?
[html]?view plaincopy
<activity??android:name="cn.smssdk.SMSSDKUIShell"??android:configChanges="keyboardHidden|orientation|screenSize"??android:theme="@android:style/Theme.Translucent.NoTitleBar"??android:windowSoftInputMode="stateHidden|adjustResize"/>?? ?
? ? ? ? ? ??接下來(lái),在你的項(xiàng)目啟動(dòng)的時(shí)候,調(diào)用
[java]?view plaincopy
SMSSDK.initSDK(this,?“appkey”,?“appsecret”);?? ? ? ? ? ? ???第二個(gè)和第三個(gè)參數(shù)分別是你在mob平臺(tái)上添加應(yīng)用提供的兩個(gè)碼!
? ? 然后添加注冊(cè)回調(diào)監(jiān)聽(tīng)接口
?
[java]?view plaincopy
SMSSDK.regeisterEventHandler(EventHandler);?? ? ? ? ? ? ? ?其中EventHandler表示毀掉函數(shù),包括四個(gè)方法。
?
[java]?view plaincopy
public?void?onRegister(); [java]?view plaincopy
public?void?beforeEvent(int?event,?Object?data); [java]?view plaincopy
public?void?afterEvent(int?event,?int?result,?Object?data); [java]?view plaincopy
public?void?onUnregister(); ? ? ? ? ? ? ?一般只需要實(shí)現(xiàn)afterEvent方法就夠了。該方法有3個(gè)參數(shù),event表示操作的類型,result表示操作的結(jié)果,data表示操作返回的數(shù)據(jù)。比較常用的event有 EVENT_GET_VERIFICATION_CODE(獲取驗(yàn)證碼)、EVENT_SUBMIT_VERIFICATION_CODE(提交驗(yàn)證碼)。
? ? 在處理完成之后,需要調(diào)用反注冊(cè)將其銷毀
?
[java]?view plaincopy
SMSSDK.unresigterEventHandler(EventHandler);?? ? ? ?? ???注意:EventHandler的四個(gè)回調(diào)函數(shù)都不能在UI線程中運(yùn)行,需要使用handler發(fā)送消息給UI線程處理。
? ? 下面看我的例子吧:
?
[java]?view plaincopy
????private?void?initSDK()?{??????????SMSSDK.initSDK(this,?"xxxxxx",?"xxxxxxxx");??????????EventHandler?eventHandler?=?new?EventHandler()?{??????????????????????????@Override??????????????public?void?afterEvent(int?event,?int?result,?Object?data)?{??????????????????Message?msg?=?new?Message();??????????????????msg.arg1?=?event;??????????????????msg.arg2?=?result;??????????????????msg.obj?=?data;??????????????????handler.sendMessage(msg);??????????????}??????????};??????????????????SMSSDK.registerEventHandler(eventHandler);????????}?? [java]?view plaincopy
@Override??????public?void?onClick(View?v)?{??????????String?phoneNums?=?phoneNumEt.getText().toString();??????????switch?(v.getId())?{??????????case?R.id.back_iv:??????????????this.finish();??????????????KeyBoardUtils.closeKeybord(phoneNumEt,?RegisterActivity.this);??????????????break;??????????case?R.id.request_code_btn:??????????????????????????if?(!judgePhoneNums(phoneNums))?{??????????????????return;??????????????}?????????????SMSSDK.getVerificationCode("86",?phoneNums);????????????????????????????requestCodeBtn.setClickable(false);??????????????requestCodeBtn.setText("重新發(fā)送("?+?i--?+?")");??????????????new?Thread(new?Runnable()?{??????????????????@Override??????????????????public?void?run()?{??????????????????????for?(int?i?=?30;?i?>?0;?i--)?{??????????????????????????handler.sendEmptyMessage(-9);??????????????????????????if?(i?<=?0)?{??????????????????????????????break;??????????????????????????}??????????????????????????try?{??????????????????????????????Thread.sleep(1000);??????????????????????????}?catch?(InterruptedException?e)?{??????????????????????????????e.printStackTrace();??????????????????????????}??????????????????????}??????????????????????handler.sendEmptyMessage(-8);??????????????????}??????????????}).start();??????????????????????????????break;??????????case?R.id.commit_btn:??????????????????????????SMSSDK.submitVerificationCode("86",?phoneNums,?inputCodeEt??????????????????????.getText().toString());??????????????createProgressBar();??????????????????????????????????????break;??????????case?R.id.clear_phone_iv:??????????????phoneNumEt.setText("");??????????????break;??????????case?R.id.clear_code_iv:??????????????inputCodeEt.setText("");??????????????break;??????????}??????}?? [java]?view plaincopy
Handler?handler?=?new?Handler()?{??????????public?void?handleMessage(Message?msg)?{??????????????if?(msg.what?==?-9)?{??????????????????requestCodeBtn.setText("重新發(fā)送("?+?i--?+?")");??????????????}?else?if?(msg.what?==?-8)?{??????????????????requestCodeBtn.setText("獲取驗(yàn)證碼");??????????????????requestCodeBtn.setClickable(true);??????????????}?else?{??????????????????int?event?=?msg.arg1;??????????????????int?result?=?msg.arg2;??????????????????Object?data?=?msg.obj;??????????????????Log.e("event",?"event="?+?event);??????????????????if?(result?==?SMSSDK.RESULT_COMPLETE)?{??????????????????????????????????????????if?(event?==?SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)?{????????????????????????Toast.makeText(getApplicationContext(),?"提交驗(yàn)證碼成功",??????????????????????????????????Toast.LENGTH_SHORT).show();??????????????????????????Intent?intent?=?new?Intent(RegisterActivity.this,??????????????????????????????????MainActivity.class);??????????????????????????startActivity(intent);??????????????????????}?else?if?(event?==?SMSSDK.EVENT_GET_VERIFICATION_CODE)?{??????????????????????????Toast.makeText(getApplicationContext(),?"驗(yàn)證碼已經(jīng)發(fā)送",??????????????????????????????????Toast.LENGTH_SHORT).show();??????????????????????}?else?{??????????????????????????((Throwable)?data).printStackTrace();??????????????????????}??????????????????}??????????????}??????????}??????};?? [java]?view plaincopy
@Override??????protected?void?onDestroy()?{??????????super.onDestroy();??????????????????this.unregisterReceiver(smsBroadcastReceiver);??????????SMSSDK.unregisterAllEventHandler();??????}?? ?
總結(jié)
至此,一個(gè)短信驗(yàn)證功能就已經(jīng)實(shí)現(xiàn)了。這個(gè)平臺(tái)有一些限制,app必須聯(lián)網(wǎng),驗(yàn)證碼只能是4位。還有就是驗(yàn)證短信不能自定義,只能是 ?【xxxx】xxxx的驗(yàn)證碼:7521。 ?這種形式的。如果開(kāi)發(fā)者不希望有這些限制的話,我看只能找運(yùn)營(yíng)商合作了。
下載
Demo下載地址!
轉(zhuǎn)載于:https://www.cnblogs.com/duanweishi/p/4455661.html
總結(jié)
以上是生活随笔為你收集整理的Android免费短信验证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。