我正在开发一个ANdroid应用程序。在我的应用程序中,我必须列出所有的对话,我做了那个部分。每个对话都包含该数字的所有短信。因此我必须对所有短信的收件箱和sentsms进行鉴别。我知道以下api可用于查找收件箱并发送。
content://sms/inbox
content://sms/sent
但我不想使用它。我使用api
列出了所有短信content://sms/
我使用columnindex的类型,地址进行了测试,但它总是为收件箱和发件箱提供相同的结果。我的示例代码是
Uri SMS_INBOX = Uri.parse("content://sms");
c = getContentResolver().query(SMS_INBOX, null, "thread_id" + " = "
+ "3", null,
"date" + " ASC");
if(c.moveToFirst()){
count.add(c.getCount());
for(int j=0;j<c.getCount();j++){
System.out.println(c.getString(c.getColumnIndexOrThrow("body")).toString());
System.out.println("new person=="+c.getColumnIndex("person")+"type=="+c.getColumnIndexOrThrow("type"));
c.moveToNext();
}
}
c.close();
请帮帮我。
答案 0 :(得分:6)
您可以在此处使用ContentObserver来跟踪已发送和已接收的消息,
覆盖onChange()
的{{1}}方法并获取短信类型并相应地工作。 Psuedo代码如下所示。
ContentObserver
为短信注册Cursor cursor = mContext.getContentResolver().query(Uri
.parse("content://sms"), null, null, null, null);
String type = cursor.getColumnIndex("type");
if(cursor.getString(type).equalsIgnoreCase("1")){
// sms received
}
else if(cursor.getString(type).equalsIgnoreCase("2")){
//sms sent
}
,
ContentObserver
ContentResolver observer = this.getContentResolver();
observer.registerContentObserver(Uri.parse("content://sms"),
true, new MySMSObserver(new Handler(),this));
将使用构造函数扩展MySMSObserver
的类,其中参数为Handler和Context,
ContentObserver