我正在开发一个 Android 应用程序。在我的应用程序中,我必须列出所有对话,并且我完成了该部分。每个对话都包含发送到该号码的所有短信。所以我必须将收件箱和已发送短信与所有短信区分开来。我知道以下 api 可用于查找收件箱和已发送短信。
content://sms/inbox
content://sms/sent
但我不想使用这个。我通过使用 api 列出了所有短信
content://sms/
我用列索引的类型、地址进行了测试,但它总是为收件箱和发件箱提供相同的结果。我的示例代码是
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();
请帮我。
您可以在此处使用 ContentObserver 来跟踪发送和接收的消息,
覆盖onChange()
的方法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));
Where MySMSObserver
将是你的班级延伸ContentObserver
构造函数的参数作为处理程序和上下文,
public MySMSObserver(Handler handler, Context context) {
super(handler);
this.context = context;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)