2015-08-31 48 views
0

我在使用特定號碼查詢短信發件箱中的數據時遇到問題。 這裏是我的代碼:使用短信發件箱查詢時出錯

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 ='」+ recipient +「'」查詢。但如果我將其更改爲「address ='0912344567'」。如果有人能幫助我。

+1

發佈堆棧跟蹤。 – JoxTraex

+0

@ FrankN.Stein是我特意做的,表明我有單引號和雙引號。但用我的真實代碼,他們之間沒有空格。 –

+0

@ FrankN.Stein OP更新。 :) –

回答

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 
} 
1

指數0請求,大小爲0

如果沒有從該查詢元素,你不應該試圖從它那裏得到的數據。進一步處理前,請務必檢查尺寸。