gpt4 book ai didi

android - 将收件箱和发送短信与所有短信区分开来

转载 作者:行者123 更新时间:2023-11-29 14:53:26 25 4
gpt4 key购买 nike

我正在开发一个 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 来跟踪已发送和已接收的消息,

覆盖 ContentObserveronChange() 方法并获取短信类型并相应地工作。伪代码可以如下所示。

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
}

为 SMS 注册 ContentObserver

ContentResolver observer = this.getContentResolver();
observer.registerContentObserver(Uri.parse("content://sms"),
true, new MySMSObserver(new Handler(),this));

MySMSObserver 将是您的类扩展 ContentObserver,构造函数的参数为​​ Handler 和 Context,

public MySMSObserver(Handler handler, Context context) {
super(handler);
this.context = context;
}

关于android - 将收件箱和发送短信与所有短信区分开来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11980788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com