Android 如何获取所有消息';s的主体通过线程\u id?
我有一个显示收件箱的活动此活动有一个listview和一个OnItemClickListener,当我单击每个项目时,一个新的活动开始:我想显示我单击的联系人的所有消息此处是我此活动代码的一部分:Android 如何获取所有消息';s的主体通过线程\u id?,android,sms,android-contentprovider,Android,Sms,Android Contentprovider,我有一个显示收件箱的活动此活动有一个listview和一个OnItemClickListener,当我单击每个项目时,一个新的活动开始:我想显示我单击的联系人的所有消息此处是我此活动代码的一部分: super.onCreate(savedInstanceState); setContentView(R.layout.activity_conversation); ContentResolver contentResolver = getContentResolver();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conversation);
ContentResolver contentResolver = getContentResolver();
Bundle extras = getIntent().getExtras();
String value = null;
if (extras != null) {
value = extras.getString("id");
}
Uri uri = Uri.parse("content://sms/conversations/");
Cursor smsCur = contentResolver.query(uri, null, "thread_id=" + value, null, null);
现在我想通过线程id获取我从以前的活动中获取的所有消息,但我不知道如何获取?我的问题是如何获取消息体?关于这个主题有很多问题,但我没有找到关于如何查询消息体的任何信息 您可以使用以下代码获取对话 获取已发送的消息
Uri mSmsinboxQueryUri = Uri.parse("content://sms/sent");
获取收件箱消息的步骤
Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
对于短信息和彩信:
Uri uri = Uri.parse("content://mms-sms/conversations/");
下面是阅读消息的代码
Cursor cursor1 = getContentResolver().query(mSmsinboxQueryUri,new String[] { "_id", "thread_id", "address", "person", "date","body", "type" }, null, null, null);
String[] columns = new String[] { "address", "person", "date", "body","type" };
if (cursor1.getCount() > 0) {
String count = Integer.toString(cursor1.getCount());
while (cursor1.moveToNext()){
String address = cursor1.getString(cursor1.getColumnIndex(columns[0]));
String name = cursor1.getString(cursor1.getColumnIndex(columns[1]));
String date = cursor1.getString(cursor1.getColumnIndex(columns[2]));
String msg = cursor1.getString(cursor1.getColumnIndex(columns[3]));
String type = cursor1.getString(cursor1.getColumnIndex(columns[4]));
}
}
参考资料
Uri mSmsinboxQueryUri = Uri.parse("content://sms/sent");
获取收件箱消息的步骤
Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
对于短信息和彩信:
Uri uri = Uri.parse("content://mms-sms/conversations/");
下面是阅读消息的代码
Cursor cursor1 = getContentResolver().query(mSmsinboxQueryUri,new String[] { "_id", "thread_id", "address", "person", "date","body", "type" }, null, null, null);
String[] columns = new String[] { "address", "person", "date", "body","type" };
if (cursor1.getCount() > 0) {
String count = Integer.toString(cursor1.getCount());
while (cursor1.moveToNext()){
String address = cursor1.getString(cursor1.getColumnIndex(columns[0]));
String name = cursor1.getString(cursor1.getColumnIndex(columns[1]));
String date = cursor1.getString(cursor1.getColumnIndex(columns[2]));
String msg = cursor1.getString(cursor1.getColumnIndex(columns[3]));
String type = cursor1.getString(cursor1.getColumnIndex(columns[4]));
}
}
参考资料
Uri uri = Uri.parse("content://sms/");
cursor = contentResolver.query(uri, null, "thread_id=" + value, null, "date asc");
有一个名为“type”的列显示消息是传入的还是传出的,因此传入消息显示属于联系人的部分对话,传出消息显示我的部分对话,我认为这是一种有效的方式 我找到了一种通过线程id获取对话所有消息的方法,因此我可以只获取两条消息之间的消息,而不获取其他消息:
Uri uri = Uri.parse("content://sms/");
cursor = contentResolver.query(uri, null, "thread_id=" + value, null, "date asc");
有一个名为“type”的列显示消息是传入的还是传出的,因此传入消息显示属于联系人的部分对话,传出消息显示我的部分对话,我认为这是一种有效的方式 但是我想阅读我和我点击的联系人之间的所有消息,我的意思是,对于spessial thread_id,我想你的代码正在阅读所有消息。我已经多次看到此代码,但我不想将发送和接收的消息分开。你为什么不尝试提供你在问题中提供的条件和此答案?这不会有什么区别吗?但我想阅读我和我点击的联系人之间的所有消息,我的意思是,对于spessial thread_id,我认为您的代码正在读取所有消息。我已多次看到此代码,但我不想将发送和接收的消息分开。为什么不尝试提供您在问题中提供的条件和此答案?这不会有什么不同吗?