1

Я попытался следующий код,Как я могу получить тело sms и извлечь из него контент?

 Uri inboxURI = Uri.parse("content://sms/inbox"); 

     // List required columns 
     String[] reqCols = new String[] { "_id", "address", "body", "date" }; 
     ContentResolver cr = getContentResolver(); 

     Calendar cal = Calendar.getInstance(); 
     Long currentDate = cal.getTimeInMillis(); 
     cal.add(Calendar.HOUR, -1); 
     Long lastDate = cal.getTimeInMillis(); 
     String criteria = "date between '" + lastDate + "' and '" + currentDate + "'"; 

     Cursor c = cr.query(inboxURI, reqCols, criteria, null, null); 
     adapter = new SimpleCursorAdapter(this, R.layout.row, c,new String[] { "body", "address", "date" }, new int[] { 
         R.id.lblMsg, R.id.lblNumber, R.id.lblDate }); 
     lvMsg.setAdapter(adapter); 

Здесь я получаю SMS-сообщения, которые получены в прошлом 1 час.

Я хочу, чтобы фильтровать даже больше по содержанию, так попробовал следующее,

String criteria = "(body like '%spent%' or body like '%withdrawn%') " + 
       "and date between '" + lastDate + "' and '" + currentDate + "'"; 

Теперь я получаю соответствующие SMS-сообщения. Но я хочу получить сумму, которая была потрачена/снята. Например: My SMS выглядит следующим образом

Rs.350.50 was spent oun your Credit card on XXXXXX at XXXX. Avl bal: Rs.35200.05 

Здесь я хочу, чтобы извлечь 350.50

Так что, как я хочу взять всю сумму, потраченную/отменила от каждого SMS.

Как я могу это получить?

ответ

0

Вы можете сделать что-то подобное, чтобы получить сумму. Во-первых получить индекс целого числа из строки, как этот

String s = new String("xyz123"); 
Matcher matcher = Pattern.compile("\\d+").matcher(s); 
matcher.find(); 
int i = Integer.valueOf(matcher.group()); 

Затем после получения индекса первого целого числа вы можете запустить цикл проверки, если следующий символ является цифрой или нет. Когда вы обнаружите, что первый несимметричный символ выходит из цикла. Итак, теперь у вас есть начальный и конечный индекс суммы. Теперь вы можете легко использовать String.substring (int startIndex, int endIndex) метод для точного подсчета

Смежные вопросы