1

J'ai essayé le code suivant,Comment puis-je obtenir le corps SMS et extraire le contenu de cela?

 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); 

Ici, je reçois les SMSes qui sont reçus dans le passé 1 heure.

Je veux filtrer encore plus par le contenu alors essayé ce qui suit,

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

Maintenant, je reçois le SMSes appropriés. Mais je veux obtenir le montant qui a été dépensé/retiré. Par exemple: Mon SMS est la suivante

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

Ici, je veux extraire 350.50

Donc, ce que je veux prendre tout le montant dépensé/retiré de chaque SMS.

Comment puis-je l'obtenir?

Répondre

0

Vous pouvez faire quelque chose comme ça pour obtenir le montant. Tout d'abord l'index de nombre entier de la chaîne comme celui-ci

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

Ensuite, après avoir obtenu l'index de premier entier, vous pouvez alors exécuter une boucle de vérifier si le caractère suivant est un chiffre ou non. Lorsque vous trouvez le premier caractère non numérique, quittez la boucle. Donc maintenant vous avez à la fois l'index de début et de fin du montant. Maintenant, vous pouvez facilement utiliser méthode String.substring (int startIndex, int endIndex) pour trouver le montant exact correctement