Android Studio中OTP短信的只读数字

Android Studio中OTP短信的只读数字,android,sms,digit,one-time-password,Android,Sms,Digit,One Time Password,我正在尝试从安卓手机短信中读取OTP。我能够接收整个消息。但是,我只需要OTP,这是唯一的数字从短信 请提出解决方案。 谢谢当获取整个sms时,请使用此方法获取OTP: final Pattern p = Pattern.compile( "(\\d{4})" ); final Matcher m = p.matcher(messages[0].getMessageBody());

我正在尝试从安卓手机短信中读取OTP。我能够接收整个消息。但是,我只需要OTP,这是唯一的数字从短信

请提出解决方案。
谢谢

当获取整个sms时,请使用此方法获取OTP:

                    final Pattern p = Pattern.compile( "(\\d{4})" );
                    final Matcher m = p.matcher(messages[0].getMessageBody());
                    if ( m.find() ) {
                        Log.e("SMSotp", String.valueOf(m.group()));
                    }
                    String[] singleCHAR= m.group().split("(?!^)");

在这里,如果您的OTP是n位,那么在模式编译中使用(\d{n})在获取整个sms时使用此方法获取OTP:

                    final Pattern p = Pattern.compile( "(\\d{4})" );
                    final Matcher m = p.matcher(messages[0].getMessageBody());
                    if ( m.find() ) {
                        Log.e("SMSotp", String.valueOf(m.group()));
                    }
                    String[] singleCHAR= m.group().split("(?!^)");
在这里,如果您的OTP是n位,那么在模式编译中使用(\d{n})

试试这个

smsString = smsString.replaceAll("\\D+","");
它将从
smsString
中删除非数字。请尝试此操作

smsString = smsString.replaceAll("\\D+","");
它将从
smsString