zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android 查询 添加 修改 删除通讯录联系人示例详解手机开发

Android手机开发 详解 查询 删除 修改 示例
2023-06-13 09:20:15 时间
 uses-permission android:name="android.permission.READ_CONTACTS" /uses-permission 

 uses-permission android:name="android.permission.WRITE_CONTACTS" /uses-permission 

2.布局

 ?xml version="1.0" encoding="utf-8"? 

 RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

 xmlns:tools="http://schemas.android.com/tools" 

 android:layout_width="match_parent" 

 android:layout_height="match_parent" 

 android:paddingBottom="@dimen/activity_vertical_margin" 

 android:paddingLeft="@dimen/activity_horizontal_margin" 

 android:paddingRight="@dimen/activity_horizontal_margin" 

 android:paddingTop="@dimen/activity_vertical_margin" 

 tools:context="com.example.lj.chapter9.MainActivity" 

 EditText 

 android:id="@+id/contactNameTxt" 

 android:layout_width="match_parent" 

 android:layout_height="wrap_content" 

 android:layout_alignParentTop="true" 

 android:layout_centerHorizontal="true" 

 android:ems="10" 

 android:inputType="textPersonName" 

 android:text="姓名" / 


android:layout_height="wrap_content" android:text="Click Button Below to Run a Query" android:textSize="17dip" android:layout_below="@+id/phoneNumberTxt" android:layout_alignRight="@+id/addButton" android:layout_alignEnd="@+id/addButton" android:layout_marginTop="34dp" / Button android:id="@+id/queryButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click to Query Contacts Database" android:layout_below="@+id/phoneNumberTxt" android:layout_centerHorizontal="true" android:layout_marginTop="88dp" / Button android:id="@+id/addButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/queryButton" android:layout_alignStart="@+id/queryButton" android:layout_below="@+id/queryButton" android:layout_marginTop="35dp" android:text="Click to Add Contacts Database" / Button android:id="@+id/updateButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/queryButton" android:layout_alignStart="@+id/queryButton" android:layout_below="@+id/addButton" android:layout_marginTop="35dp" android:text="Click to Update Contacts Database" / Button android:id="@+id/deleteButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/queryButton" android:layout_alignStart="@+id/queryButton" android:layout_below="@+id/updateButton" android:layout_marginTop="35dp" android:text="Click to Delete Contacts Database" / /RelativeLayout

Android 查询 添加 修改 删除通讯录联系人示例详解手机开发

3.Activity活动

package com.example.lj.chapter9; 

import android.content.ContentResolver; 

import android.content.ContentUris; 

import android.content.ContentValues; 

import android.database.Cursor; 

import android.net.Uri; 

import android.os.Bundle; 

import android.provider.ContactsContract; 

import android.support.annotation.IdRes; 

import android.support.v7.app.AppCompatActivity; 

import android.view.View; 

import android.widget.Button; 

import android.widget.EditText; 

import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

 private static final String TAG = "AndroidTest"; 

 @Override 

 protected void onCreate(Bundle savedInstanceState) { 

 super.onCreate(savedInstanceState); 

 setContentView(R.layout.activity_main); 

 Button queryBtn = (Button) findViewById(R.id.queryButton); 

 queryBtn.setOnClickListener(new View.OnClickListener() { 

 @Override 

 public void onClick(View v) { 

 queryContactPhoneNumber(); 

 }); 

 Button addBtn = (Button) findViewById(R.id.addButton); 

 addBtn.setOnClickListener(new View.OnClickListener() { 

 @Override 

 public void onClick(View v) { 

 addContactPhoneNumber(getEditValue(R.id.contactNameTxt), getEditValue(R.id.phoneNumberTxt)); 

 }); 

 Button updateBtn = (Button) findViewById(R.id.updateButton); 

 updateBtn.setOnClickListener(new View.OnClickListener() { 

 @Override 

 public void onClick(View v) { 

 updateContactPhoneNumber(getEditValue(R.id.contactNameTxt), getEditValue(R.id.phoneNumberTxt)); 

 }); 

 Button deleteBtn = (Button) findViewById(R.id.deleteButton); 

 deleteBtn.setOnClickListener(new View.OnClickListener() { 

 @Override 

 public void onClick(View v) { 

 deleteContactPhoneNumber(getEditValue(R.id.contactNameTxt)); 

 }); 

 private String getEditValue(@IdRes int id) { 

 EditText txt = (EditText) findViewById(id); 

 return txt.getText().toString(); 

 private void deleteContactPhoneNumber(String contactName) { 

 //根据姓名求id 

 Uri uri = ContactsContract.RawContacts.CONTENT_URI; 

 ContentResolver resolver = getContentResolver(); 

 String where = ContactsContract.PhoneLookup.DISPLAY_NAME; 

 Cursor cursor = resolver.query(uri, new String[]{ContactsContract.Data._ID}, where + "=?", new String[]{contactName}, null); 

 if (cursor.moveToFirst()) { 

 int id = cursor.getInt(0); 

 //根据id删除data中的相应数据 

 resolver.delete(uri, where + "=?", new String[]{contactName}); 

 uri = ContactsContract.Data.CONTENT_URI; 

 resolver.delete(uri, ContactsContract.Data.RAW_CONTACT_ID + "=?", new String[]{id + ""}); 

 Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show(); 

 private void updateContactPhoneNumber(String contactName, String phoneNumber) { 

 Uri uri = ContactsContract.Data.CONTENT_URI;//对data表的所有数据操作 

 ContentResolver resolver = getContentResolver(); 

 ContentValues values = new ContentValues(); 

 values.put(ContactsContract.Data.DATA1, phoneNumber); 

 int result = resolver.update(uri, values, ContactsContract.Data.MIMETYPE + "=? and " + ContactsContract.PhoneLookup.DISPLAY_NAME + "=?", 

 new String[]{ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, contactName}); 

 if (result 0) { 

 Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show(); 

 private void addContactPhoneNumber(String contactName, String phoneNumber) { 

 ContentValues values = new ContentValues(); 

 Uri uri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values); 

 long contact_id = ContentUris.parseId(uri); 

 //插入data表 

 uri = ContactsContract.Data.CONTENT_URI; 

 String raw_contact_id = ContactsContract.Data.RAW_CONTACT_ID; 

 String data2 = ContactsContract.Data.DATA2; 

 String data1 = ContactsContract.Data.DATA1; 

 //add Name 

 values.put(raw_contact_id, contact_id); 

 values.put(ContactsContract.CommonDataKinds.Phone.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); 

 values.put(data2, contactName); 

 values.put(data1, contactName); 

 getContentResolver().insert(uri, values); 

 values.clear(); 

 //add Phone 

 values.put(raw_contact_id, contact_id); 

 values.put(ContactsContract.CommonDataKinds.Phone.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 

 values.put(data2, phoneNumber); //手机 

 values.put(data1, phoneNumber); 

 getContentResolver().insert(uri, values); 

 values.clear(); 

 Toast.makeText(this, "添加新的联系人:" + contactName + " " + phoneNumber, Toast.LENGTH_SHORT).show(); 

 private void queryContactPhoneNumber() { 

 String[] cols = {ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; 

 Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 

 cols, null, null, null); 

 for (int i = 0; i cursor.getCount(); i++) { 

 cursor.moveToPosition(i); 

 // 取得联系人名字 

 int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME); 

 int numberFieldColumnIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 

 String name = cursor.getString(nameFieldColumnIndex); 

 String number = cursor.getString(numberFieldColumnIndex); 

 Toast.makeText(this, name + " " + number, Toast.LENGTH_SHORT).show(); 

}

该活动主要是根据http://www.cnblogs.com/liaojie970/p/5744580.html这篇博客改编而来,将里面如:

Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");

方式改为了
uri = ContactsContract.Data.CONTENT_URI;

其基本思路是一样的

6190.html

app程序应用开发手机开发无线开发移动端开发