Android 自定义添加,查询联系人
发布日期:2021-06-30 22:35:14
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月12日 08时19分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
COMP7404 Machine Learing——ROC
2019-04-30
MATLAB与CUDA
2019-04-30
Linux png转jpg (convert命令)
2019-04-30
Ubuntu更新后终端中字体的颜色全是白色
2019-04-30
vscode git
2019-04-30
基于MATLAB的二进制数字调制与解调信号的仿真——2PSK
2019-04-30
基于MATLAB的模拟调制信号与解调的仿真——DSB
2019-04-30
HDU - 1166 敌兵布阵 (树状数组模板题/线段树模板题)
2019-04-30
CodeForces - 761C Dasha and Password (思维 暴力)
2019-04-30
CodeForces - 987C Three displays (暴力/dp)
2019-04-30
牛客国庆集训派对Day4——I 连通块计数(思维)
2019-04-30
牛客国庆集训派对Day5——L 数论之神(找规律/数论)
2019-04-30
CodeForces - 629B Far Relative’s Problem(模拟)
2019-04-30
CodeForces - 456C Boredom (dp)
2019-04-30
CodeForces - 675A Infinite Sequence(简单数论 细节)
2019-04-30
CodeForces - 1042B Vitamins (思维)
2019-04-30
ACM 2013 长沙区域赛 Collision (几何)
2019-04-30