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......餘下全文>>
建行手機銀行安卓用戶端在轉賬中,會發簡訊驗證碼,當看完簡訊驗證碼後,用戶端需要重新進入,怎辦?
不知道你什麼用的是說明型號的手機,一般手機發驗證碼後,安卓手機使用者用手指由上往下下拉出簡訊息後可擷取驗證碼,再做返回後就可以輸入驗證碼進行手機銀行的操作。