Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android之短信驗證碼

Android之短信驗證碼

編輯:關於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 {

	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.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;
	
	
	@Override
	protected 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() {
			
			@Override
			public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
				// TODO Auto-generated method stub
				refreshViews(arg0);
			}
			
			@Override
			public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
					int arg3) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void afterTextChanged(Editable arg0) {
				// TODO Auto-generated method stub
				
			}
		});
	}
	
	//根據edittext的內容來判斷是否應當出現“清除所有”的按鈕x
	private 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();
	}

	@Override
	public 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() {
					
					@Override
					public void onResult(int code, String reason, String result) {
						// TODO Auto-generated method stub
						if(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() {
					
					@Override
					public void onResult(int code, String reason, String result) {
						// TODO Auto-generated method stub
						if(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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved