本文共 6468 字,大约阅读时间需要 21 分钟。
一、读取的短信信息有
二、例子代码
1、权限
2、item_sms.xml
3、activity_sms.xml
4、SmsInfo
package com.guan.contentproviderwork.contact;/** * @author Guan * @file com.guan.contentproviderwork.contact * @date 2015/9/9 * @Version 1.0 */public class SmsInfo { /** * 短信内容 */ private String smsbody; /** * 发送短信的电话号码 */ private String phoneNumber; /** * 发送短信的日期和时间 */ private String date; /** * 发送短信人的姓名 */ private String name; /** * 短信类型1是接收到的,2是已发出 */ private String type; public String getSmsbody() { return smsbody; } public void setSmsbody(String smsbody) { this.smsbody = smsbody; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; }}
5、SmsContent类读取信息内容
package com.guan.contentproviderwork.contact;import android.app.Activity;import android.database.Cursor;import android.net.Uri;import java.util.ArrayList;import java.util.List;/** * @author Guan * @file com.guan.contentproviderwork.contact * @date 2015/9/9 * @Version 1.0 */public class SmsContent { private Activity activity; private Uri uri; Listinfos; public SmsContent(Activity activity, Uri uri) { infos = new ArrayList (); this.activity = activity; this.uri = uri; } /** * Role:获取短信的各种信息 * Date:2012-3-19 * * @author CODYY)peijiangping */ public List getSmsInfo() { String[] projection = new String[] { "_id", "address", "person", "body", "date", "type" }; Cursor cusor = activity.managedQuery(uri, projection, null, null, "date desc"); int nameColumn = cusor.getColumnIndex("person"); int dateColumn = cusor.getColumnIndex("date"); int phoneNumberColumn = cusor.getColumnIndex("address"); int smsbodyColumn = cusor.getColumnIndex("body"); int typeColumn = cusor.getColumnIndex("type"); if (cusor != null) { while (cusor.moveToNext()) { SmsInfo smsinfo = new SmsInfo(); smsinfo.setName(cusor.getString(nameColumn)); smsinfo.setDate(cusor.getString(dateColumn)); smsinfo.setPhoneNumber(cusor.getString(phoneNumberColumn)); smsinfo.setSmsbody(cusor.getString(smsbodyColumn)); smsinfo.setType(cusor.getString(typeColumn)); infos.add(smsinfo); } cusor.close(); } return infos; }}
6、SmsListAdapter
package com.guan.contentproviderwork.contact;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.guan.contentproviderwork.R;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;/** * @author Guan * @file com.guan.contentproviderwork.contact * @date 2015/9/9 * @Version 1.0 */public class SmsListAdapter extends BaseAdapter { private LayoutInflater layoutinflater; private ListmInfos; public SmsListAdapter(Context context,List infos) { this.layoutinflater = LayoutInflater.from(context); this.mInfos = infos; } @Override public int getCount() { return mInfos.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView != null) { holder = (ViewHolder) convertView.getTag(); } else { convertView = layoutinflater.inflate(R.layout.item_sms, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } holder.tvSmsName.setText(mInfos.get(position).getPhoneNumber()); holder.tvSmsBody.setText(mInfos.get(position).getSmsbody()); return convertView; } static class ViewHolder { @Bind(R.id.tv_Sms_name) TextView tvSmsName; @Bind(R.id.tv_Sms_body) TextView tvSmsBody; ViewHolder(View view) { ButterKnife.bind(this, view); } }}
7、SmsListActivity
package com.guan.contentproviderwork.contact;import android.app.Activity;import android.net.Uri;import android.os.Bundle;import android.widget.ListView;import com.guan.contentproviderwork.R;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;public class SmsListActivity extends Activity { @Bind(R.id.lv_sms) ListView lvSms; private Listinfos; /** * 所有的短信 */ public static final String SMS_URI_ALL = "content://sms/"; /** * 收件箱短信 */ public static final String SMS_URI_INBOX = "content://sms/inbox"; /** * 发件箱短信 */ public static final String SMS_URI_SEND = "content://sms/sent"; /** * 草稿箱短信 */ public static final String SMS_URI_DRAFT = "content://sms/draft"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sms); ButterKnife.bind(this); Uri uri = Uri.parse(SMS_URI_INBOX); SmsContent sc = new SmsContent(this, uri); infos = sc.getSmsInfo(); lvSms.setAdapter(new SmsListAdapter(this,infos)); }}
三、参考链接
四、效果图