Android 簡訊驗證碼控制項,android驗證碼控制項

來源:互聯網
上載者:User

Android 簡訊驗證碼控制項,android驗證碼控制項

Android 簡訊驗證碼控制項,便於項目中使用統一樣式,統一提示修改,個人認為挺好用的

<span style="font-size:18px;">public class SMSButton extends Button {/** 是否展示 */private boolean mAttached;/** 發送驗證碼後等待的時間 */private int delayTime = 60;/** Button 上面的文本 */private String showText = "擷取";/** Button 等待的時候顯示的文本 */private String delayText = FORMATETAG + "秒";/** 現在是否在倒計時 */private boolean isDelayed = false;private SMSOnClickListener clickListener;private int currentDelayTime = 0;private static final String FORMATETAG = "%d";private Runnable mTimer = new Runnable() {@Overridepublic void run() {currentDelayTime -= 1;if (currentDelayTime <= 0) {isDelayed = false;setClickable(true);setText(showText);} else {getHandler().postDelayed(mTimer, 1000);setDelayTimeText(currentDelayTime);}}};private void setDelayTimeText(int time) {setText(String.format(delayText, time));}public SMSButton(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);initView();}public SMSButton(Context context, AttributeSet attrs) {super(context, attrs);initView();}public SMSButton(Context context) {super(context);initView();}@Overridepublic void setOnClickListener(OnClickListener l) {super.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (!isDelayed) {// 如果沒有在等待if (clickListener != null) {if (clickListener.validate()) {setClickable(false);isDelayed = true;currentDelayTime = delayTime;getHandler().post(mTimer);clickListener.onClick();}}}}});}/** * 初始化頁面 */private void initView() {String text = getText().toString().toString().trim();if (text != null && !"".equals(text)) {showText = text;}}@Overrideprotected void onAttachedToWindow() {super.onAttachedToWindow();if (!mAttached) {mAttached = true;setText(showText);}}@Overrideprotected void onDetachedFromWindow() {super.onDetachedFromWindow();if (mAttached) {mAttached = false;isDelayed = false;getHandler().removeCallbacks(mTimer);}}public int getDelayTime() {return delayTime;}public void setDelayTime(int delayTime) {this.delayTime = delayTime;}public String getShowText() {return showText;}public void setShowText(String showText) {this.showText = showText;}public String getDelayText() {return delayText;}public void setDelayText(String start, String end) {this.delayText = start + FORMATETAG + end;}public SMSOnClickListener getSMSOnClickListener() {return clickListener;}public void setSMSOnClickListener(SMSOnClickListener clickListener) {setOnClickListener(null);this.clickListener = clickListener;}public interface SMSOnClickListener {public boolean validate();public void onClick();}</span>
用法:

/** * 例子 *  * smsButton = (SMSButton) findViewById(R.id.smsButton); * smsButton.setShowText("擷取"); * smsButton.setDelayText("等", "秒"); smsButton.setSMSOnClickListener(new * SMSOnClickListener() { *  * @Override public boolean validate() { return true; } * @Override public void onClick() { *           ToastUtil.getInstance().toastInCenter(LoadingActivity.this, *           "onClick"); } }); */




安卓指令碼精靈怎擷取簡訊驗證碼

android應用的自動化測試必然會涉及到註冊登入功能,而許多的註冊登入或修改密碼功能常常需要輸入簡訊驗證碼,因此有必要能夠自動獲得下發的簡訊驗證碼。
  主要就是即時擷取簡訊資訊。
  android上擷取簡訊資訊主要有BroadcastReceiver方式與資料庫方式,要即時的話就BroadcastReceiver比較方便
  public class SMSReceiver extends BroadcastReceiver{
  private String verifyCode="";
  public static final String TAG = "SMSReceiver";
  public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
  @Override
  public void onReceive(Context context, Intent intent){
  if (intent.getAction().equals(SMS_RECEIVED_ACTION)){
  SmsMessage[] messages = getMessagesFromIntent(intent);
  for (SmsMessage message : messages){
  Log.i(TAG, message.getOriginatingAddress() + " : " +
  message.getDisplayOriginatingAddress() + " : " +
  message.getDisplayMessageBody() + " : " +
  message.getTimestampMillis());
  String smsContent=message.getDisplayMessageBody();
  Log.i(TAG, smsContent);
  writeFile(smsContent);//將簡訊內容寫入SD卡
  }
  }
  }
  public final SmsMessage[] getMessagesFromIntent(Intent intent){
  Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
  byte[][] pduObjs = new byte[messages.length][];
  for (int i = 0; i < messages.length; i++)
  {
  pduObjs[i] = (byte[]) messages[i];
  }
  byte[][] pdus = new byte[pduObjs.length][];
  int pduCount = pdus.length;
  SmsMessage[] msgs = new SmsMessage[pduCount];
  for (int i = 0; i < pduCount; i++) {
  pdus[i] = pduObjs[i];
  msgs[i] = SmsMessag......餘下全文>>
 
建行手機銀行安卓用戶端在轉賬中,會發簡訊驗證碼,當看完簡訊驗證碼後,用戶端需要重新進入,怎辦?

不知道你什麼用的是說明型號的手機,一般手機發驗證碼後,安卓手機使用者用手指由上往下下拉出簡訊息後可擷取驗證碼,再做返回後就可以輸入驗證碼進行手機銀行的操作。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.