Android之簡訊驗證碼

來源:互聯網
上載者:User

Android之簡訊驗證碼

我們今天所使用的方案只是android手機裝置整合簡訊驗證碼功能的方案之一。

我們所採用的方案是使用彙總資料的簡訊驗證sdk。

 

程式的介面如下所示:

 

實現步驟:

1.到彙總資料官網上申請簡訊驗證SDK資料,產生AppKey,如所示:

 

2.配置工程,把相關的sdk庫匯入到Project中去,:

 

3.配置AndroidManifest.xml檔案,在Application節點中加入以下代碼:

 

        

 

4.在src中加入MyApplication類,並且在AndroidManifest.xml檔案中將application的name屬性設定為src中定義的MyApplication(如android:name="com.bear.smscaptcha.MyApplication"),在MyApplication的onCreate()方法中調用介面初始化:

 

import com.thinkland.sdk.util.CommonFun;import android.app.Application;public class MyApplication extends Application {@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();// 在使用SDK各組件之前初始化context資訊,傳入ApplicationContext// 注意該方法要再setContentView方法之前實現/** * 初始化方法 *  * @param context * @needFriends 是否需要好友功能 */CommonFun.initialize(getApplicationContext(), false);}}

5.完成主Demo類,內容如下:

 

 

import android.app.Activity;import android.content.pm.ActivityInfo;import android.os.Bundle;import android.text.Editable;import android.text.Html;import android.text.TextWatcher;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.thinkland.sdk.sms.SMSCaptcha;import com.thinkland.sdk.util.BaseData.ResultCallBack;public class MainActivity extends Activity implements OnClickListener{private SMSCaptcha mCaptcha; //簡訊sdk主對象private EditText etPhoneNum;  //手機號碼輸入框private ImageView ivClear;  //清除已經輸入內容的表徵圖private Button btnNext; //下一步按鈕private EditText etCaptchaNum; //驗證碼輸入框private Button btnSubmit; //提交驗證碼private ImageView ivSmsClear; private TextView tvUnreceiveIdentify;private static final int RETRY_INTERVAL = 60; //設定一個倒計時時間private int time = RETRY_INTERVAL;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);setContentView(R.layout.activity_main);initData();setupViews();}private void initData(){//初始化sdk主操作對象mCaptcha = SMSCaptcha.getInstance();}/** * 初始化介面控制項 */private void setupViews(){btnNext = (Button) findViewById(R.id.btn_next);ivClear = (ImageView) findViewById(R.id.iv_clear);btnNext.setOnClickListener(this);ivClear.setOnClickListener(this);etCaptchaNum = (EditText) findViewById(R.id.et_sms_captcha);btnSubmit = (Button) findViewById(R.id.btn_submit);ivSmsClear = (ImageView) findViewById(R.id.iv_sms_clear);btnSubmit.setOnClickListener(this);ivSmsClear.setOnClickListener(this);tvUnreceiveIdentify = (TextView) findViewById(R.id.tv_unreceive_identify);etPhoneNum = (EditText) findViewById(R.id.et_write_phone);etPhoneNum.setText("");etPhoneNum.requestFocus();etPhoneNum.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {// TODO Auto-generated method stubrefreshViews(arg0);}@Overridepublic void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {// TODO Auto-generated method stub}@Overridepublic void afterTextChanged(Editable arg0) {// TODO Auto-generated method stub}});}//根據edittext的內容來判斷是否應當出現“清除所有”的按鈕xprivate void refreshViews(CharSequence s){if(s.length() >0){btnNext.setEnabled(true);ivClear.setVisibility(View.VISIBLE);}else{btnNext.setEnabled(false);ivClear.setVisibility(View.GONE);}}//倒計時方法private void countDown(){new Thread(new  Runnable() {public void run() {while(time-- > 0){final String unReceive = MainActivity.this.getResources().getString(R.string.smssdk_receive_msg, time);runOnUiThread(new Runnable() {public void run() {tvUnreceiveIdentify.setText(Html.fromHtml(unReceive));tvUnreceiveIdentify.setEnabled(false);}});try {Thread.sleep(1000);} catch (Exception e) {// TODO: handle exception}}time = RETRY_INTERVAL;}}).start();}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.btn_next://刪除掉字串中所有的空格String phone = etPhoneNum.getText().toString().trim().replace("\\s*", "");/** * 請求簡訊驗證碼 *  * code返回碼:伺服器: 0 成功; 1 錯誤;本地: -2 本網異常; -3 伺服器網路異常;-4 解析錯誤;-5初始化異常reason返回資訊 成功或錯誤原因.result返回結果,JSON格式.錯誤或者無傳回值時為空白. */mCaptcha.sendCaptcha(phone, new ResultCallBack() {@Overridepublic void onResult(int code, String reason, String result) {// TODO Auto-generated method stubif(code == 0){//調用成功}}});countDown();break;case R.id.iv_clear:etPhoneNum.getText().clear();break;case R.id.btn_submit:String phoneNumber = etPhoneNum.getText().toString().trim().replace("\\s*", "");String code = etCaptchaNum.getText().toString().trim().replace("\\s*", "");/** * 驗證簡訊驗證碼 *  * code返回碼:伺服器: 0 成功; 1 錯誤;本地: -2 本網異常; -3 伺服器網路異常;-4 解析錯誤;-5初始化異常reason返回資訊 成功或錯誤原因.result返回結果,JSON格式.錯誤或者無傳回值時為空白. */mCaptcha.commitCaptcha(phoneNumber, code, new ResultCallBack() {@Overridepublic void onResult(int code, String reason, String result) {// TODO Auto-generated method stubif(code == 0){//簡訊驗證成功Toast.makeText(MainActivity.this, "驗證成功!!!!!!!!", Toast.LENGTH_LONG).show();}else{//驗證失敗Toast.makeText(MainActivity.this, "失敗!!!!!!!!" + reason, Toast.LENGTH_LONG).show();}}});break;case R.id.iv_sms_clear:break;default:break;}}}


 

最後,附上demo代碼的工程源碼壓縮包:

AndroidSMSCaptcha

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.