android通讯录之短信

本篇文章记录通讯录短信功能的实现

效果图:


1、短信列表布局:sms_list_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<LinearLayout
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#c0c0c0"
    android:orientation="vertical">
    <TextView
        android:text="短信"
        android:textColor="#000"
        android:textSize="30dip"
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">
        
    </TextView>
</LinearLayout><strong>
</strong><FrameLayout 
    android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:background="#ff666666">
    </ListView>
    <ImageButton 
        android:id="@+id/button1"
       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/new_sms_btn"
        android:layout_gravity="bottom|center"
        android:layout_marginBottom="20dp<strong>"
       </strong> android:padding="20dp"
         android:background="@drawable/btn_bg_sms_send"></ImageButton>
</FrameLayout>
</LinearLayout><strong>
</strong>
2、sms_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:gravity="center_vertical"  
    android:paddingTop="5dip" >  
  
    <QuickContactBadge  
        android:id="@+id/qcb"  
        android:layout_width="75dip"  
        android:layout_height="75dip"  
        android:layout_marginBottom="3dip"  
        android:src="@drawable/ic_a9" />  
  
    <LinearLayout  
        android:id="@+id/ll"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_marginLeft="3dip"  
        android:layout_toRightOf="@+id/qcb"  
        android:gravity="center_vertical"  
        android:orientation="horizontal" >  
  
        <TextView  
            android:id="@+id/name"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:singleLine="true"  
            android:textAppearance="?android:attr/textAppearanceMedium"  
            android:textColor="#ffffff" />  
  
        <TextView  
            android:id="@+id/count"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_marginLeft="5dip"  
            android:singleLine="true"  
            android:textAppearance="?android:attr/textAppearanceSmall"  
            android:textColor="#ffffff" />  
     
    </LinearLayout>  
  
       <TextView  
        android:id="@+id/date"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_below="@+id/ll"  
       android:gravity="right"
        android:singleLine="true" 
         android:layout_alignParentRight="true"
        android:layout_centerVertical="true" 
        android:textAppearance="?android:attr/textAppearanceSmall"  
        android:textColor="#ffffff" />  
  
    <TextView  
        android:id="@+id/content"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_below="@+id/date"  
        android:layout_gravity="bottom"  
        android:layout_marginLeft="3dip"  
        android:layout_toRightOf="@+id/qcb"  
        android:singleLine="true"  
        android:textAppearance="?android:attr/textAppearanceMedium"  
        android:textColor="#5CACEE" />  
  
</RelativeLayout>  

3、代码实现(SMSListActivity.java)

package com.example.SMS;

import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.Bundle;  
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;  
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageButton;
import android.widget.ListView;

import com.example.SMS.RexseeSMS;
import com.example.SMS.SMSAdapter;
import com.example.SMS.SMSBean;
import com.example.service.MyService;
import com.example.telephone.ContactsActivity;
import com.example.telephone.ContactsActivity.MyReceiver;
import com.example.R;  
  
/** 
 * 短信列表 
 *  
 * @author Administrator 
 *  
 */  
public class SMSListActivity extends Activity {  
  
    private ListView smsListView;  
    private SMSAdapter smsAdapter;  
    private RexseeSMS rsms;
	private MyReceiver receiver=null;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.sms_list_view);  
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
       
        smsListView = (ListView) findViewById(R.id.list); 
        init();
      
    }
 protected void onStart(){
	 super.onStart();
	 startService(new Intent(SMSListActivity.this,MyService.class));
		receiver = new MyReceiver();
		IntentFilter filter = new IntentFilter();
		filter.addAction("com.example.service.MyService");
		SMSListActivity.this.registerReceiver(receiver,filter);
 }
    public void init(){
     
       smsAdapter = new SMSAdapter(SMSListActivity.this); 
        rsms = new RexseeSMS(SMSListActivity.this);  
        List<SMSBean> list_mmt = rsms.getThreadsNum(rsms.getThreads(0));  
        // 注入短信列表数据  
        smsAdapter.assignment(list_mmt);  
        // 填充数据  
        smsListView.setAdapter(smsAdapter); 
        // 短信列表项点击事件  
        smsListView.setOnItemClickListener(new OnItemClickListener(){

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				// TODO Auto-generated method stub
				Map<String,String>map = new HashMap<String,String>();
				SMSBean sb = smsAdapter.getItem(position);
				map.put("phoneNumber", sb.getAddress());
				map.put("threadId", sb.getThread_id());
				BaseIntentUtil.intentSysDefault(SMSListActivity.this, HuiHuaActivity.class, map);
				
			}
        	
        });
        ImageButton b = (ImageButton)this.findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener(){
                  private String smsBody;
               @Override
               public void onClick(View v) {
				// TODO Auto-generated method stub
				Uri smsToUri = Uri.parse("smsto:");  
				Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);  
				intent.putExtra("sms_body", smsBody);  
				startActivity(intent);  
			}
        	
        });
    }
    protected void onDestroy(){
    	stopService(new Intent(SMSListActivity.this,MyService.class));
    	super.onDestroy();
    }
    public class MyReceiver extends BroadcastReceiver{

		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			Bundle bundle = intent.getExtras();
			int i = bundle.getInt("i");
			smsListView.setFilterText(i+"");
		}
    	
    }
    }  
4、适配器
package com.example.SMS;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.example.R;
import com.example.bohao.CallLogBean;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class SMSAdapter extends BaseAdapter {
	 private List<SMSBean> smsList;  
	    private Date date;  
	    private SimpleDateFormat sdf;  
	private Context context;

    public SMSAdapter(Context context) {  
	        this.smsList = new ArrayList<SMSBean>();  
	        this.date = new Date();  
	       this.context = context;
	        this.sdf = new SimpleDateFormat("MM/dd");  
	    }  

   // HH:mm

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return smsList!=null?smsList.size():0;
	
	}

	@Override
	public SMSBean getItem(int position) {
		// TODO Auto-generated method stub
		return smsList.get(position);
		
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
	     return position;
		
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		ViewHolder holder = null;
		if(convertView == null){ 
			convertView = LayoutInflater.from(context).inflate(R.layout.sms_list_item,parent,false);
			 holder = new ViewHolder();  
	            holder.name = (TextView) convertView.findViewById(R.id.name);  
	            holder.count = (TextView) convertView.findViewById(R.id.count);  
	            holder.date = (TextView) convertView.findViewById(R.id.date);  
	            holder.content = (TextView) convertView.findViewById(R.id.content);
	            convertView.setTag(holder);
	        } else {  
	            holder = (ViewHolder) convertView.getTag();  
	        }  
		    SMSBean smsBean = smsList.get(position);
	        holder.name.setText(smsBean.getAddress());
	        holder.count.setText('('+smsBean.getCount()+')');
	        this.date.setTime(smsBean.getDate());
	        holder.date.setText(this.sdf.format(date));
	        holder.content.setText(smsBean.getSnippet());
		
		return convertView;
	}
   public  class ViewHolder {  
    public TextView name;  
    public TextView count;  
    public TextView date;  
    public TextView content;
}
public void assignment(List<SMSBean> list_mmt) {
	// TODO Auto-generated method stub
	 //this.smsList = smsList;  
	this.smsList = list_mmt; 
}  
}

5、短信内容布局(huihua_item_view.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/re"
    android:background="#c0c0c0">
    <ImageView
        android:id="@+id/im"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="返回"
        android:textColor="#000"
        android:layout_marginTop="8dip"
        android:layout_marginLeft="10dip"
        android:background="@drawable/abc_ic_ab_back_mtrl_am_alpha"/>
    <TextView
        android:id="@+id/text"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="信息"
        android:textSize="30dip"
        android:textColor="#ffffffff"
        android:layout_gravity="center"
        android:layout_centerInParent="true">
        
    </TextView>
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/image1"
        android:background="@drawable/tab_contact_selected" 
        android:layout_marginTop="10dip"
        android:layout_marginRight="8dip"/>
    
    <ImageView
        android:id="@+id/image1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="@drawable/call" 
        android:layout_marginTop="10dip"
        android:layout_marginRight="13dip"/>

        
</RelativeLayout>
<RelativeLayout 
    android:id="@+id/Re"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
     <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layout_above="@+id/bottom_ll">
    </ListView>
    <LinearLayout
        android:id="@+id/bottom_ll"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/lin"
        android:layout_gravity="bottom"
        android:background="@drawable/main_tab_bg"
        android:orientation="horizontal"
        android:padding="5dip" >

        <Button
            android:id="@+id/duomeiti"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|left"
            android:background="@android:drawable/stat_notify_chat" />

        <EditText
            android:id="@+id/ed"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="5dip"
            android:layout_marginRight="5dip"
            android:layout_weight="1"
            android:background="@drawable/bg_sms_input"
            android:gravity="left|top"
            android:hint="输入短信内容"
            android:maxLines="4"
            android:padding="5dip" />

        <Button
            android:id="@+id/fasong"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|right"
            android:background="@android:drawable/ic_menu_send"
            android:textColor="#ffffff" />
    </LinearLayout>
</RelativeLayout>
</LinearLayout>

6、huihua_1_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
     android:gravity="left"
    android:orientation="horizontal"
    android:paddingBottom="10dip"
    android:paddingLeft="5dip"
    android:paddingRight="50dip"
    android:paddingTop="10dip" >
    <LinearLayout 
        android:id="@+id/ll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
        android:layout_gravity="left"
        android:orientation="vertical"
        android:gravity="center_vertical"
        android:background="@android:drawable/divider_horizontal_bright">
         
          <com.example.SMS.CustomTextView
            android:id="@+id/messagedetail_row_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="top|left"
            android:padding="5dip"
            android:textColor="#000000" />
      <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="#65879e" />
    </LinearLayout>"

</LinearLayout>
7、huihua_2_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:orientation="horizontal"
    android:paddingBottom="10dip"
    android:paddingLeft="50dip"
    android:paddingRight="5dip"
    android:paddingTop="10dip" >

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
          
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:background="@android:drawable/divider_horizontal_bright">
        android:background="@android:drawable/btn_default">

        <com.example.SMS.CustomTextView
            android:id="@+id/messagedetail_row_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="top|left"
            android:padding="5dip"
            android:textColor="#000000" />

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="#65879e" />
    </LinearLayout>

</LinearLayout>

8、适配器

package com.example.SMS;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.*;
import com.example.R;
import com.example.SMS.SMSAdapter.ViewHolder;
import java.util.*;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;

public class HuiHuaAdapter extends BaseAdapter  {
     private List<MessageBean> List;
	private Context context;
	private Date date;
	private LayoutInflater vi;
	 private LinearLayout convert;
	private LinearLayout layout_child;
   private TextView idate;
    private CustomTextView text;
	public HuiHuaAdapter(Context mContext, List<MessageBean> List) {
		// TODO Auto-generated constructor stub
	context = mContext;
		this.List = List;
		vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return List!=null?List.size():0;
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return List.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
//		ViewHolder holder;
//		if(convertView == null){
//			convertView = LayoutInflater.from(mContext).inflate(R.layout.huihua_1_item, null);
//			holder = new ViewHolder();
//			holder.date = (TextView)convertView.findViewById(R.id.text1);
//			holder.text = (CustomTextView)convertView.findViewById(R.id.messagedetail_row_text);
//			convertView.setTag(holder);
//		}else {  
//            holder = (ViewHolder) convertView.getTag();  
//        }  
		MessageBean m = List.get(position);
//		holder.date.setText(m.getDate());
//		holder.text.setText(m.getText());
		int itemLayout  = m.getLayoutID();
		convert = new LinearLayout(context);
		vi.inflate(itemLayout,convert,true);
		convert.setBackgroundColor(Color.TRANSPARENT);
		layout_child = (LinearLayout) convert.findViewById(R.id.ll);
		 text = (CustomTextView) convert.findViewById(R.id.messagedetail_row_text);
		 text.setText(m.getText());

		 idate = (TextView)convert.findViewById(R.id.date);
		idate.setText(m.getDate());
		
		return convert;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值