这里我们就把验证码放到剪切板了,当然你也可以直接把它填充到文本框中
private void getCode(Context context, String body) { //获取剪贴板管理器: ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); Pattern pattern1 = Pattern.compile("(\\d{6})");//提取六位数字 Matcher matcher1 = pattern1.matcher(body);//进行匹配 Pattern pattern2 = Pattern.compile("(\\d{4})");//提取四位数字 Matcher matcher2 = pattern2.matcher(body);//进行匹配 if (matcher1.find()) {//匹配成功 String code = matcher1.group(0); // 创建普通字符型ClipData ClipData mClipData = ClipData.newPlainText("Label", code); // 将ClipData内容放到系统剪贴板里。 cm.setPrimaryClip(mClipData); Toast.makeText(context, "验证码复制成功", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onReceive: " + code); } else if (matcher2.find()) { String code = matcher2.group(0); // 创建普通字符型ClipData ClipData mClipData = ClipData.newPlainText("Label", code); // 将ClipData内容放到系统剪贴板里。 cm.setPrimaryClip(mClipData); Toast.makeText(context, "验证码复制成功", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onReceive: " + code); } else { Toast.makeText(context, "未检测到验证码", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onReceive: " + "未检测到验证码"); } }在这里通过正则表达式匹配出短信内容中的验证码,因为验证码大多数为4位或者6位,所以在这里为了简化就直接进行了4位验证码和6位验证码的判断