怎么在Android中获取短信验证码

  介绍

本篇文章为大家展示了怎么在Android中获取短信验证码,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

MainActivity

public  class  MainActivity  extends  AppCompatActivity  {      ,public  static  TextView 多行文字;   ,private  SmsContent 内容;      ,@Override   ,protected  void  onCreate (Bundle  savedInstanceState), {   super.onCreate才能(savedInstanceState);   ,,setContentView (R.layout.activity_main);      if  (this.checkSelfPermission才能(Manifest.permission.READ_SMS)   ,,,,=,PackageManager.PERMISSION_GRANTED), {   ,,//申请READ_SMS权限   ,,ActivityCompat.requestPermissions(这,new  String [] {Manifest.permission.READ_SMS},, 1);   ,,}      mText 才能=,(TextView), findViewById (R.id.text);      时间=content 才能;new  SmsContent (new 处理程序(),这个);   ,,,//注册短信变化监听   ,,,this.getContentResolver () .registerContentObserver (Uri.parse(“内容://短信/?,,真的,,内容);   ,}      ,@Override   ,protected  void  onDestroy (), {   super.onDestroy才能();      this.getContentResolver才能().unregisterContentObserver(内容);   ,}      ,@Override   ,public  void  onRequestPermissionsResult (int  requestCode, @NonNull  String[],权限,@NonNull  int [], grantResults), {   super.onRequestPermissionsResult才能(requestCode,权限,grantResults);   ,,doNext (requestCode grantResults);   ,}      ,private  void  doNext (int  requestCode, int [], grantResults), {   if 才能;(requestCode ==, 1), {   ,,if  (grantResults [0],==, PackageManager.PERMISSION_GRANTED), {      ,,},{else    ,,,//Permission 否认   ,,}   ,,}   ,}   }

SmsContent

class  SmsContent  extends  ContentObserver  {      ,private  Cursor  Cursor =,空;   ,private  Context 语境;      ,public  SmsContent (Handler 处理程序,Context 上下文),{   超级才能(处理器);=this.context 才能;环境;   ,}      ,@Override   ,public  void  onChange (boolean  selfChange), {      super.onChange才能(selfChange);      Log.i才能(“SMSTest",“Begin");//读才能取收件箱中指定号码的短的信//,,cursor =, context.getContentResolver () .query (Uri.parse(“内容://短信/inbox"),, new  String [] {“_id",,“address",,“read",,“body"},//,,,,,,地址=?,以及阅读=?“,,new  String [] {“10086”,,“0”;},,“_id  desc");//按id排序,如果按日期排序的话,修改手机时间后,读取的短信就不准了      cursor 才能=,context.getContentResolver () .query (Uri.parse(“内容://短信/inbox"),, new  String [] {“_id",,“address",,“read",,“body"},   零,,,,,空,,“_id  desc");      Log.i才能(“SMSTest",“cursor.isBeforeFirst ():,“, +, cursor.isBeforeFirst (), +,“, cursor.getCount ():,“, +, cursor.getCount ());   if 才能;(cursor  !=, null ,,, cursor.getCount(),祝辞,0),{      ,,cursor.moveToFirst ();   ,,int  smsbodyColumn =, cursor.getColumnIndex (“body");   ,,String  smsBody =, cursor.getString (smsbodyColumn);   ,,Log.i (“SMSTest",“smsBody =,,, +, smsBody);      ,,MainActivity.mText.setText (getDynamicPassword (smsBody));   ,,}//在才能用managedQuery的时候,不能主动调用关闭()方法,,否则在Android  4.0 +的系统上,,会发生崩溃   如果才能(Build.VERSION.SDK_INT  & lt;, 14), {   ,,cursor.close ();   ,,}   ,}      ,public  static  String  getDynamicPassword (String  str), {   Pattern 才能;continuousNumberPattern =, Pattern.compile (“[0 - 9 \ \] +“);   Matcher 才能;m =, continuousNumberPattern.matcher (str);   String 才能;dynamicPassword =,““   而才能(m.find ()) {   ,,如果(m.group () . length (),==, 6), {   ,,,System.out.print (m.group ());   ,,,dynamicPassword =, m.group ();   ,,}   ,,}      return 才能;dynamicPassword;   ,}   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Android中获取短信验证码