2012-02-09 68 views
0

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

我发现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

+0

任何想法如何找出哪些联系人发送了最后几条短信? – ycomp 2012-02-10 01:33:52

回答

0

对不起,但并没有什么在Android与“短信日志”相关的SDK。

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(); 

}