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.Creator
CREATOR = 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 List
getContactInfos(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 List
mDatas; @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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C经典 打印二维数组五个学生三门课的每门课平均成绩及总课程的平均的成绩
下一篇:Android 自定义水平滚动的容器

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月12日 08时19分45秒