MobTech短信及语音验证系统是完全免费的短信验证码服务
https://blog.youkuaiyun.com/qq_39249422/article/details/79159909
public class TestActivity extends Activity {
@BindView(R.id.et_phone)
EditText etPhone;
@BindView(R.id.btn_click)
Button btnClick;
@BindView(R.id.btn_submit)
Button btnSubmit;
private EventHandler eventHandler = new EventHandler() {
@Override
public void afterEvent(int event, int result, Object data) {
//event 具体做的事件类型
//result 某个事件结果
if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
Log.i("", "afterEvent threadId = " + Thread.currentThread().getId());
//目前的事件就是下发验证码短信
if (result == SMSSDK.RESULT_COMPLETE) {
//发送验证码短信成功 7928
Log.i("", "验证码短信发送成功==============");
} else {
//发送验证码短信失败
Log.i("", "验证码短信发送失败==============");
}
}else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE){
//如果事件类型是校验验证码
if (result == SMSSDK.RESULT_COMPLETE){
//校验成功
Log.i("", "检验验证码短信成功==============");
}else{
//校验失败
Log.i("", "检验验证码短信失败==============");
}
}
super.afterEvent(event, result, data);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ButterKnife.bind(this);
//主线程线程id是1
Log.i("", "onCreate threadId = " + Thread.currentThread().getId());
//发送验证码短信这件事情是否成功
SMSSDK.registerEventHandler(eventHandler);
//在点击按钮后,可以发送验证码短信给指定手机号
btnClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phone = etPhone.getText().toString().trim();
SMSSDK.getVerificationCode("86", phone, new OnSendMessageHandler() {
@Override
public boolean onSendMessage(String country, String phone) {
return false;
}
});
}
});
//短信验证码和手机号匹配校验过程
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//验证码短信3分钟有效
SMSSDK.submitVerificationCode("86","18701589847","5807");
}
});
}
}
2 是否是手机号验证
public class SMSUtil {
/**
* 判断手机号码是否合理
*y
*/
public static boolean judgePhoneNums(Activity activity,String phoneNums) {
if (isMatchLength(phoneNums, 11)
&& isMobileNO(phoneNums)) {
return true;
}
Toast.makeText(activity, "手机号码输入有误!", Toast.LENGTH_SHORT).show();
return false;
}
/**
* 验证手机格式
*/
public static boolean isMobileNO(String mobileNums) {
/*
* 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
* 联通:130、131、132、152、155、156、185、186 电信:133、153、180、189、177(1349卫通)
* 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
*/
String telRegex = "[1][3578]\\d{9}";// "[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、7、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
if (TextUtils.isEmpty(mobileNums))
return false;
else
return mobileNums.matches(telRegex);
}
/**
* 判断一个字符串的位数
*
* @param str
* @param length
* @return
*/
public static boolean isMatchLength(String str, int length) {
if (str.isEmpty()) {
return false;
} else {
return str.length() == length ? true : false;
}
}
/**
* 权限校验
* @param activity
*/
public static void checkPermission(Activity activity) {
if (Build.VERSION.SDK_INT >= 23) {
int readPhone = activity.checkSelfPermission(Manifest.permission.READ_PHONE_STATE);
int receiveSms = activity.checkSelfPermission(Manifest.permission.RECEIVE_SMS);
int readSms = activity.checkSelfPermission(Manifest.permission.READ_SMS);
int readContacts = activity.checkSelfPermission(Manifest.permission.READ_CONTACTS);
int readSdcard = activity.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
int requestCode = 0;
ArrayList<String> permissions = new ArrayList<String>();
if (readPhone != PackageManager.PERMISSION_GRANTED) {
requestCode |= 1 << 0;
permissions.add(Manifest.permission.READ_PHONE_STATE);
}
if (receiveSms != PackageManager.PERMISSION_GRANTED) {
requestCode |= 1 << 1;
permissions.add(Manifest.permission.RECEIVE_SMS);
}
if (readSms != PackageManager.PERMISSION_GRANTED) {
requestCode |= 1 << 2;
permissions.add(Manifest.permission.READ_SMS);
}
if (readContacts != PackageManager.PERMISSION_GRANTED) {
requestCode |= 1 << 3;
permissions.add(Manifest.permission.READ_CONTACTS);
}
if (readSdcard != PackageManager.PERMISSION_GRANTED) {
requestCode |= 1 << 4;
permissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
if (requestCode > 0) {
String[] permission = new String[permissions.size()];
activity.requestPermissions(permissions.toArray(permission), requestCode);
return;
}
}
}
}