我尝试了以下代码,
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);
我在这里收到过去1小时内收到的短信。
我想通过内容进行更多过滤,以便尝试以下内容,
String criteria = "(body like '%spent%' or body like '%withdrawn%') " +
"and date between '" + lastDate + "' and '" + currentDate + "'";
现在我收到了相应的短信。但我想得到花费/撤回的金额。 例如:我的短信如下
Rs.350.50 was spent oun your Credit card on XXXXXX at XXXX. Avl bal: Rs.35200.05
我想提取350.50
所以这就是我想从每条短信中花费/取出的所有金额。
我怎样才能实现这个目标?
答案 0 :(得分: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)方法正确查找确切数量