您的当前位置:主页 > 常见问题

合作客户

方太
金伯利

联系我们

0371-86687083
地址:郑州市管城区紫金山路兴达国贸1802室
电话:0371-86687083

常见问题

国际验证码接口发布验证码有哪些好处?

2020-10-20 00:00:00    来源:http://www.jzyyun.com/    点击:2673    喜欢:0

  国际验证码接口开发:短信验证码如何自动填写?项目中提高体验一般在短信验证的时候会自动填充验证码,接下来我们就实现一把,界面就是这样主要以实现逻辑为主。首先点击验证码发一个定时器。这里用到CountDownTimer这个类完成定时器,点击发送验证码随机生成一个Radom数Math.Radom()*9000+1000;


国际验证码接口发布验证码有哪些好处?


  在这里花费我大量时间,但是对知识的渴求还是摸爬滚打让我明白了问题,java和kotlit交互起来还是有问题嘛,表示踩坑很苦逼

  /*thread{Runnable{

  SystemClock.sleep(4000)

  mCountDownTimer!!.ancleTimers()

  }}.start()*/这里是调用的Kotlin的thread导致我想要的效果实现不了

  Thread(Runnable{

  SystemClock.sleep(4000)

  mCountDownTimer!!.ancleTimers()

  }).start()

  写到这里把倒计时的效果写出来了,然后们看自动填写短信内容是怎么回事,我们再梳理下逻辑

  1.写布局

  2.用CountDownTImer做个定时器,里面两个方法一个onTick,一个onFinish()我是用接口回调自己封装了当点击开始,返回,取消,销毁的操作,可以参考我写的

  3.真实项目时会用到网络请求,把Radom的随机数发到服务器,服务器做操作,最终发一个短信

  4.最后就是我们要操作的短信内容里的数字信息了

  我们用到内容观察者来观察数据发生变化,用内容提供都读取信息填到TextView上

  //自动获取验证码实现步骤

  public class SmsContent extends ContentObserver{

  public static final String SMS_URI_INBOX="content://sms/inbox";

  private Activity activity=null;

  private String smsContent="";

  private EditText verifyText=null;

  public SmsContent(Activity activity,Handler handler,EditText verifyText){

  super(handler);

  this.activity=activity;

  this.verifyText=verifyText;

  }

  SuppressWarnings("deprecation")

  Override

  public void onChange(boolean selfChange){

  super.onChange(selfChange);

  Cursor cursor=null;

  //读取收件箱中指定号码的未读短信,按id排序,防止手机更改时间后读取短信混乱

  cursor=activity.managedQuery(Uri.parse(SMS_URI_INBOX),

  new String[]{"_id","address","body","read"},

  "address=?and read=?",new String[]{"10690278071714","0"},

  "_id desc");

  if(cursor!=null){//如果短信为未读模式

  cursor.moveToFirst();

  if(cursor.moveToFirst()){

  //将未读改为已读模式

  ContentValues values=new ContentValues();

  values.put("read","1");

  String smsbody=cursor.getString(cursor.getColumnIndex("body"));

  System.out.println("smsbody======================="+smsbody);

  String regEx="[^0-9]";

  Pattern p=Pattern.compile(regEx);

  Matcher m=p.matcher(smsbody.toString());

  //截取短信中的数字个数为3

  smsContent=m.replaceAll("").trim().toString().substring(0,4);

  verifyText.setText(smsContent);

  }

  }

  }

  }

  在方法中调用刚写的

  //自动获取验证码,需要时调用下面两行

  content=new SmsContent(this,new Handler(),verifyCodeEForget);

  //注册短信变化监听

  this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"),true,content);

  最后取消消毁内容提供者

  Override

  protected void onDestroy(){

  super.onDestroy();

  this.getContentResolver().unregisterContentObserver(content);

  }

  记的加权限,必要时配置清单文件

  <!--读取短信-->

  <uses-permission android:name="android.permission.RECEIVE_SMS"/>

  <uses-permission android:name="android.permission.READ_SMS"/>

上一篇:短信群发:为什么手机接收不到京东验证码?
下一篇:106短信群发平台代理嘉之元科技


  • 服务咨询 0371-86687083
  • 一对一贵宾级服务
  • 7X24小时技术保障
Copyright © 2013-2017. All Rights Reserved. 郑州嘉之元计算机科技有限公司 www.jzyyun.com 版权所有 | 增值电信业务经营许可证:B2-20194910| 备案号: 豫ICP备15030919-2号
营业执照
图片
[网站地图] [联系我们]
本公司主要从事:短信验证码,短信接口,短信平台,群发短信,短信群发 sitemap:sitemap.txt|

豫公网安备41010402002418号

点击这里给我发消息