介绍
本篇文章为大家展示了怎么在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中获取短信验证码