[android]_[初级]_[通过会话thread_id查询群发信息(文本彩信)]

思路:查询文本彩信  首先查询threads表,获取会话的thread_id,recipient_ids。 1.通过thread_id可以查询pdu表,获取part的mid,通过mid来查询part表获取文本彩信的内容text.
 2.recipient_ids 群发会话的话,会存在多个canonical_addresses表的_id,其中_id在recipient_ids列中是用空格分隔的。 通过分割获取多个_id,再查询canonical_addresses表获取群发会话的多个联系人的address.

 public void DoQueryMassChatListFromThreadId(String threadId)
    {
    	ArrayList<ChatMessage> lists =new ArrayList<ChatMessage>();
    	
	   	 final String pdu_uri ="content://mms";
	   	 Cursor cursor =getContentResolver().query(Uri.parse(pdu_uri), null, "thread_id = ?", new String[] { threadId }, null);
	   	 if(cursor!=null &&cursor.getCount()>0)
	   	 {
	   		 String [] temp=cursor.getColumnNames(); //获取该表格的所有列名
	   		 while(cursor.moveToNext())
	   		 {
		    		 ChatMessage chat =new ChatMessage();
		    		 String _id =cursor.getString(cursor.getColumnIndex("_id"));
		    		 String thread_id =cursor.getString(cursor.getColumnIndex("thread_id"));
		    		 String date =cursor.getString(cursor.getColumnIndex("date"));
		    		 chat.id =_id;
		    		 chat.threadId =thread_id;
		    		 chat.date =date;
		    		 lists.add(chat);
	   		 }
	   	 }
	   	 //查询part表
	   	 for(int i =0;i<lists.size();i++)
	   	 {
	   		 ChatMessage ii =lists.get(i);
	   		 
	   		 Cursor part_cursor =getContentResolver().query(Uri.parse("content://mms/part/"), null,  "mid = ?", new String[] { ii.id }, null);
		   	 if(part_cursor!=null &&part_cursor.getCount()>0)
		   	 {
		   		 while(part_cursor.moveToNext())
		   		 {
			    		 String mid =part_cursor.getString(part_cursor.getColumnIndex("mid"));
			    		 String cid =part_cursor.getString(part_cursor.getColumnIndex("cid"));
			    		 String body ="";
			    		 if(cid.equalsIgnoreCase("<text_0>"))
			    		 {
			    			 body =part_cursor.getString(part_cursor.getColumnIndex("text"));
			    			 ChatMessage chat =FindChatMesageBodyByPartMid(lists,mid);
			    			 chat.body =body;
			    		 }
			    		
			    		 Log.i("mid:", mid+" "+"text:"+body);
		   		 }
		   	 }
	   	 }
	   	
    }
    
    public ChatMessage FindChatMesageBodyByPartMid(ArrayList<ChatMessage> chats,String mid)
    {
    	ChatMessage chat =null;
    	for(int i =0;i<chats.size();i++)
    	{
    		ChatMessage ii =chats.get(i);
    		if(ii.id.equalsIgnoreCase(mid))
    		{
    			chat =ii;
    			break;
    		}
    	}
    	
    	return chat;
    }


   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值