我在使用特定号码从短信发件箱查询数据时遇到问题。 这是我的代码:
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'”。如果有人可以帮我这个。
答案 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
}