这是我获取短信的方式,效果很好。发送和接收有单独的日志。某些第三方 SMS 程序消息可能不会显示。它查找从名为 phoneNumbers 的字符串中的号码发送或接收的 SMS,并将所有找到的 SMS 消息添加到数组中以进行处理。
public void getSMS(){
final String[] projection = null;
final String selection = "address IN (" + phoneNumbers + ")";
final String selectionArgs[] = null;
final String sortOrder = null;
Cursor c = null;
c = getContentResolver().query(
Uri.parse("content://sms/sent"),
projection,
selection,
selectionArgs,
sortOrder);
if (c.moveToFirst() && c.isNull(c.getColumnIndex("date"))==false && c.isNull(c.getColumnIndex("address"))==false) {
do {
CCall call = new CCall(c.getLong(c.getColumnIndex("date")),c.getString(c.getColumnIndex("address")),4,0);
arrCall.add(call);
} while (c.moveToNext());
}
c = getContentResolver().query(
Uri.parse("content://sms/inbox"),
projection,
selection,
selectionArgs,
sortOrder);
if (c.moveToFirst() && c.isNull(c.getColumnIndex("date"))==false && c.isNull(c.getColumnIndex("address"))==false) {
do {
CCall call = new CCall(c.getLong(c.getColumnIndex("date")),c.getString(c.getColumnIndex("address")),5,0);
arrCall.add(call);
} while (c.moveToNext());
}
c.close();
}