在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。步骤:首先我使用了Conte
在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
步骤:
首先我使用了ContentObserver监听短信,(最好知道您的验证码从那个号码发过来)
然后从短信中用正则的分组去拿到验证码(当然验证码必须是什么格式)
贴出关键代码:
注册监听短信数据库的
ContentObserver c=new ContentObserver(han) { @Override public void onChange(boolean selfChange) { // TODO Auto-generated method stub super.onChange(selfChange); han.sendEmptyMessage(0); } }; getContentResolver().reGISterContentObserver(Uri.parse("content://sms"), true, c); Handler han = new Handler() { @SuppressWarnings("deprecation") public void handleMessage(android.os.Message msg) { String codestr = null; try { codestr = Cus_UnitTools.getsmsyzm(Reg_ForgetPassWord.this); code.setText(codestr); requestcode(); } catch (Exception e) { Log.e("yung", "验证码提取失败:" + codestr); } }; }; public static String getsmsyzm(Activity c) { Uri uri = Uri.parse("content://sms/inbox"); String[] projection = new String[] { "address", "person", "body" }; String selection = " address='" + JTPHONE + "' "; String[] selectionArgs = new String[] {}; String sortOrder = "date desc"; @SuppressWarnings("deprecation") Cursor cur = c.managedQuery(uri, projection, selection, selectionArgs, sortOrder); if(cur!=null&&cur.getCount()>0){ cur.moveToFirst(); String body = cur.getString(cur.getColumnIndex("body")).replaceAll( "\n", " "); cur.close(); return getyzm(body, YZMLENGTH); } cur.close(); return null; } public static String getyzm(String body, int YZMLENGTH) { // 首先([a-zA-Z0-9]{YZMLENGTH})是得到一个连续的六位数字字母组合 // (?<![a-zA-Z0-9])负向断言([0-9]{YZMLENGTH})前面不能有数字 // (?![a-zA-Z0-9])断言([0-9]{YZMLENGTH})后面不能有数字出现 Pattern p = Pattern .compile("(?<![a-zA-Z0-9])([a-zA-Z0-9]{" + YZMLENGTH + "})(?![a-zA-Z0-9])"); Matcher m = p.matcher(body); if (m.find()) { System.out.println(m.group()); return m.group(0); } return null; } //有些验证码是纯数字的那么直接用这个就可以了//Pattern p = Pattern.compile("(?<![0-9])([0-9]{" + YZMLENGTH+ "})(?![0-9])");
--结束END--
本文标题: 在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充
本文链接: https://www.lsjlt.com/news/225834.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-30
2024-04-30
2024-04-30
2024-04-30
2024-04-30
2024-04-30
2024-04-30
2024-04-30
2024-04-30
2024-04-30
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0