短信发件箱查询出错

时间:2015-08-31 11:54:40

标签: android

我在使用特定号码从短信发件箱查询数据时遇到问题。 这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Uri uriSMSURI = Uri.parse("content://sms/inbox");
    Cursor cur = getContentResolver().query(uriSMSURI, null, null, null, null);
    List<Map<String, String>> data = new ArrayList<>();
    ArrayList<String> numlist = new ArrayList<String>();
    while (cur.moveToNext()) {
        String num = cur.getString(2);
        num = num.replace("+639", "09");
        if (!numlist.contains(num)) {
            numlist.add(num);
            inboxmsg.add(cur.getString(cur.getColumnIndexOrThrow("body")));
            inboxmsgdate.add(cur.getString(cur.getColumnIndexOrThrow("date")));
        } }
        String datafromoutbox=getOutbox(numlist.get(0));
        }



    private String getOutbox(String recipient){
    Uri uriSMSURI = Uri.parse("content://sms/sent");
    Cursor cur = getContentResolver().query(uriSMSURI, null, "address='"+recipient+"'", null, null);
    cur.moveToNext();
    String d=cur.getString(cur.getColumnIndexOrThrow("body"));
    return d;
    }

上面的代码崩溃了我的应用。问题出在查询“address ='”+收件人+“'”查询中。但如果我将其更改为“address ='0912344567'”。如果有人可以帮我这个。

2 个答案:

答案 0 :(得分:1)

  

请求索引0,大小为0

如果查询中没有元素,则不应尝试从中获取数据。在进一步处理之前,请务必检查尺寸。

答案 1 :(得分:0)

我修好了。我只需要检查查询是否返回一些数据。

private Data getOutbox(String recipient){
String numsent=recipient.trim();
Uri uriSMSURI = Uri.parse("content://sms/sent");
Cursor cur = getContentResolver().query(uriSMSURI, null, "address='"+numsent+"'", null, null);
ArrayList<Data> dataList = new ArrayList<Data>();
Data item = new Data();
Data d=null;
if(cur.moveToLast()){
    //do something
}
else{
 //do something
}