Android 自定义添加,查询联系人
发布日期:2021-06-30 22:35:14
浏览次数:4
分类:技术文章
本文共 7882 字,大约阅读时间需要 26 分钟。
添加联系人信息
public class AddContactActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_contact); } public void addContact(View view){ //1.获得联系人对外暴露的地址 Uri uri = Uri.parse("content://com.android.contacts/raw_contact"); //2.获得联系人对外暴露的数据地址 Uri dataUri = Uri.parse("content://com.android.contacts/data"); Cursor cursor = getContentResolver().query(dataUri, null, null, null, null); //3.为什么要移动到最后,因为添加数据都在最后添加 cursor.moveToLast(); long id = cursor.getLong(cursor.getColumnIndex("_id")); //4.每添加一条数据就产生一个新的id long newId = id + 1; ContentValues values = new ContentValues(); values.put("contact_id", newId); getContentResolver().insert(uri, values); //插入电话 ContentValues pvalues = new ContentValues(); pvalues.put("raw_contact_id", newId); pvalues.put("mimeType", "vnd.android.cursor.item/phone_v2"); pvalues.put("data1", "88888888888"); //插入邮件 ContentValues evalues = new ContentValues(); evalues.put("raw_contact_id", newId); evalues.put("mimeType", "vnd.android.cursor.item/email_v2"); evalues.put("data1", "kk@tom.com"); //插入名称 ContentValues nvalues = new ContentValues(); nvalues.put("raw_contact_id", newId); nvalues.put("mimeType", "vnd.android.cursor.item/name"); nvalues.put("data1", "黎明"); getContentResolver().insert(dataUri, nvalues); }}
实体类
public class ContactInfo implements Parcelable { public String name; public String number; public ContactInfo(){} @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeString(number); } public static final Parcelable.CreatorCREATOR = new Parcelable.Creator () { public ContactInfo createFromParcel(Parcel in) { return new ContactInfo(in); } public ContactInfo[] newArray(int size) { return new ContactInfo[size]; } }; private ContactInfo(Parcel in) { name = in.readString(); number = in.readString(); }}
查询工具类
public class ContactService { public static ListgetContactInfos(Context context){ List contactInfos = new ArrayList (); Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); Uri dataUri = Uri.parse("content://com.android.contacts/data"); Cursor cursor = context.getContentResolver().query(uri, new String[]{ "contact_id"}, null, null, null); while(cursor.moveToNext()){ long contact_id = cursor.getLong(cursor.getColumnIndex("contact_id")); Cursor dataCursor = context.getContentResolver().query(dataUri, new String[]{ "data1","mimeType"}, "raw_contact_id", new String[]{contact_id + ""}, null); while(dataCursor.moveToNext()){ String data1 = dataCursor.getString(dataCursor.getColumnIndex("data1")); String mimeType = dataCursor.getString(dataCursor.getColumnIndex("mimeType")); ContactInfo info = new ContactInfo(); if ("vnd.android.cursor.item/name".equals(mimeType)) { info.name = data1; }else if ("vnd.android.cursor.item/phone_v2".equals(mimeType)) { info.number = data1; } contactInfos.add(info); } dataCursor.close(); } cursor.close(); return contactInfos; }}
查询联系人
public class QueryContactActivity extends BaseActivity { protected static final String CONTACTS = "contacts"; protected static final int RESULTCODE = 0x00; private ListView mListView; private ListmDatas; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_query_contact); initDatas(); initViews(); initEvents(); } private void initEvents() { mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Intent intent = new Intent(QueryContactActivity.this, GetContactActivity.class); //Bundle bundle = new Bundle(); //bundle.putParcelable(CONTACTS, mDatas.get(position)); intent.putExtra(CONTACTS, mDatas.get(position)); setResult(RESULTCODE, intent); finish(); } }); } private void initViews() { mListView = (ListView) findViewById(R.id.listView1); mListView.setAdapter(new BasicAdapter (this, mDatas, R.layout.item_contact) { @Override public void fillView(ViewHolder holder, ContactInfo info) { TextView tvName = holder.getView(R.id.tv_name); tvName.setText(info.name); TextView tvNumber = holder.getView(R.id.tv_number); tvNumber.setText(info.number); } }); } private void initDatas() { mDatas = new ArrayList (); Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); Uri dataUri = Uri.parse("content://com.android.contacts/data"); Cursor cursor = getContentResolver().query(uri, new String[]{ "contact_id"}, null, null, null); while(cursor.moveToNext()){ long contact_id = cursor.getLong(cursor.getColumnIndex("contact_id")); Cursor dataCursor = getContentResolver().query(dataUri, new String[]{ "data1","mimeType"}, "raw_contact_id", new String[]{contact_id + ""}, null); while(dataCursor.moveToNext()){ String data1 = dataCursor.getString(dataCursor.getColumnIndex("data1")); String mimeType = dataCursor.getString(dataCursor.getColumnIndex("mimeType")); ContactInfo info = new ContactInfo(); if ("vnd.android.cursor.item/name".equals(mimeType)) { info.name = data1; }else if ("vnd.android.cursor.item/phone_v2".equals(mimeType)) { info.number = data1; } mDatas.add(info); } dataCursor.close(); } cursor.close(); }}
点击后展示联系人信息
public class GetContactActivity extends Activity { private static final int REQUESTCODE = 0x11; private EditText mName; private EditText mNumber; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_getcontact); initViews(); } private void initViews() { mName = (EditText) findViewById(R.id.editText1); mNumber = (EditText) findViewById(R.id.editText1); } public void queryContact(View view){ Intent intent = new Intent(this, QueryContactActivity.class); startActivityForResult(intent, REQUESTCODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (data != null) { //Bundle bundle = data.getExtras(); //ContactInfo info = (ContactInfo) bundle.get(QueryContactActivity.CONTACTS); if (requestCode == REQUESTCODE && resultCode == QueryContactActivity.RESULTCODE) { ContactInfo info = data.getParcelableExtra(QueryContactActivity.CONTACTS); mName.setText(info.name); mNumber.setText(info.number); } } super.onActivityResult(requestCode, resultCode, data); }}
转载地址:https://lovoo.blog.csdn.net/article/details/51236605 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月25日 22时53分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
关于进程与线程,史上最浅显易懂的一个简单解释
2019-05-01
别人用B站看弹幕,我用B站搞爬虫
2019-05-01
把 14 亿中国人都拉到一个微信群,在技术上能实现吗?
2019-05-01
这些代码神注释,请收下我的膝盖
2019-05-01
斯坦福后空翻机器人设计、代码全开源,成本降至3000美元,人人皆可DIY
2019-05-01
618|Python购书攻略
2019-05-01
请停止学习框架
2019-05-01
考研比惨五大专业排行榜,第一名没人不服!
2019-05-01
没钱没公司,怎么做一款付费产品
2021-07-04
Python 3.8 新特性来袭
2019-05-01
老程序员“被嫌弃”
2019-05-01
神器:公众号如何从第一篇文章开始看
2019-05-01
查询亿级数据毫秒级返回!Elasticsearch 是如何做到的?
2019-05-01
FastAPI 构建 API 服务,究竟有多快?
2019-05-01
为什么Quora选择用Python语言?
2019-05-01
一劳永逸学编程的方法
2019-05-01
代码整洁之道-编写 Pythonic 代码
2019-05-01
100行python代码,轻松完成贪吃蛇小游戏
2019-05-01
破解百度网盘的Pandownload开发者被捕,让人唏嘘
2019-05-01