如何检索短信日志?

时间:2012-02-09 19:29:31

标签: android

如何检索短信日志?我只是希望能够获取最近通过电话发送短信或通过电话接收的联系人列表。

我找到了CallLogs对象,但我怀疑这只适用于电话......如果我错了,请纠正我。

http://www.dcpagesapps.com/developer-resources/android/25-android-tutorial-call-logs

http://developer.android.com/reference/android/provider/CallLog.Calls.html

我发现了这一点,但我想知道是否有更好的方法......

Android 1.5: Reading SMS messages

2 个答案:

答案 0 :(得分:1)

这是我获取短信的方式,效果很好。发送和接收的日志各有不同。某些第三方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();

}

答案 1 :(得分:0)

很抱歉,Android SDK中没有任何内容与“短信日志”有关。