生活随笔
收集整理的這篇文章主要介紹了
Android免费短信验证
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載請注明住處:http://blog.csdn.net/crazy1235/article/details/41912003
介紹
? ? ? ?短信驗證功能大家都很熟悉了。在很多地方都能見到,注冊新用戶或者短息驗證支付等。短信驗證利用短信驗證碼來注冊會員,大大降低了非法注冊,很大程度上提高了用戶賬戶的安全性。
? ?目前市面上已經有了很多提供短信驗證的服務商,有收費的,也有免費的。如果是個人的開發者,用免費的是最劃算的了!下面我就介紹一個免費的短信驗證平臺---Mob.com
? ?Mob平臺提供的短信驗證功能可以實現快速的驗證和匹配通訊錄好友功能,并且能為每個app每天提供10000條免費短信驗證。很多開發者都想在自己的app中集成短信驗證功能,下面我們就來體驗一下免費的”快感“吧!
應用
? ? ???1. 首先需要注冊成為mob平臺用戶,然后進入控制中心中的【免費短信驗證碼SDK】,在界面上點擊【添加新應用】添加自己的應用。這一步驟完成之后,會給你提供一個AppKey和一個App Secret。需要把這兩個碼記下來,下面有重要用處。
? ? ? ??2. 打開網址http://sms.mob.com/Download)下載sdk。解壓之后如下圖:
?
? ? ? ?SMSSDK就是平臺提供的驗證短信的SDK,sample文件夾是一個demo。
? ? ? ?3. 在ecliplse中導入這個sdk,作為一個library,然后把它作為一個庫引入到你自己的項目中。
? ? ? ??接下來,需要在AndroidManifest.xml中添加如下smssdk需要的權限:
?
[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標簽下添加如下信息:
?
[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"/>?? ?
? ? ? ? ? ??接下來,在你的項目啟動的時候,調用
[java]?view plaincopy
SMSSDK.initSDK(this,?“appkey”,?“appsecret”);?? ? ? ? ? ? ???第二個和第三個參數分別是你在mob平臺上添加應用提供的兩個碼!
? ? 然后添加注冊回調監聽接口
?
[java]?view plaincopy
SMSSDK.regeisterEventHandler(EventHandler);?? ? ? ? ? ? ? ?其中EventHandler表示毀掉函數,包括四個方法。
?
[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(); ? ? ? ? ? ? ?一般只需要實現afterEvent方法就夠了。該方法有3個參數,event表示操作的類型,result表示操作的結果,data表示操作返回的數據。比較常用的event有 EVENT_GET_VERIFICATION_CODE(獲取驗證碼)、EVENT_SUBMIT_VERIFICATION_CODE(提交驗證碼)。
? ? 在處理完成之后,需要調用反注冊將其銷毀
?
[java]?view plaincopy
SMSSDK.unresigterEventHandler(EventHandler);?? ? ? ?? ???注意:EventHandler的四個回調函數都不能在UI線程中運行,需要使用handler發送消息給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("重新發送("?+?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("重新發送("?+?i--?+?")");??????????????}?else?if?(msg.what?==?-8)?{??????????????????requestCodeBtn.setText("獲取驗證碼");??????????????????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(),?"提交驗證碼成功",??????????????????????????????????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(),?"驗證碼已經發送",??????????????????????????????????Toast.LENGTH_SHORT).show();??????????????????????}?else?{??????????????????????????((Throwable)?data).printStackTrace();??????????????????????}??????????????????}??????????????}??????????}??????};?? [java]?view plaincopy
@Override??????protected?void?onDestroy()?{??????????super.onDestroy();??????????????????this.unregisterReceiver(smsBroadcastReceiver);??????????SMSSDK.unregisterAllEventHandler();??????}?? ?
總結
至此,一個短信驗證功能就已經實現了。這個平臺有一些限制,app必須聯網,驗證碼只能是4位。還有就是驗證短信不能自定義,只能是 ?【xxxx】xxxx的驗證碼:7521。 ?這種形式的。如果開發者不希望有這些限制的話,我看只能找運營商合作了。
下載
Demo下載地址!
轉載于:https://www.cnblogs.com/duanweishi/p/4455661.html
總結
以上是生活随笔為你收集整理的Android免费短信验证的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。