Androidは連絡先にアクセスし、連絡先を追加します.
7617 ワード
package com.example.test;
import java.util.ArrayList;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.test.AndroidTestCase;
import android.util.Log;
public class ContactsTest extends AndroidTestCase {
private static final String TAG = "ContactsTest";
/**
*
* */
public void testGetContacts(){
Uri uri = Uri.parse("content://com.android.contacts/contacts"); //
ContentResolver resolver = getContext().getContentResolver();
Cursor cursor = resolver.query(uri, new String[]{"_id"}, null, null, null);
while(cursor.moveToNext()){
int contactsId = cursor.getInt(0);
StringBuilder sb = new StringBuilder("contactsId=");
sb.append(contactsId);
uri = Uri.parse("content://com.android.contacts/contacts/" + contactsId + "/data"); //
Cursor dataCursor = resolver.query(uri, new String[]{"mimetype", "data1", "data2"}, null, null, null);
while(dataCursor.moveToNext()){
String data = dataCursor.getString(dataCursor.getColumnIndex("data1"));
String type = dataCursor.getString(dataCursor.getColumnIndex("mimetype"));
if("vnd.android.cursor.item/name".equals(type)){ // mimetype name
sb.append(", name=" + data);
} else if("vnd.android.cursor.item/email_v2".equals(type)){ // mimetype email
sb.append(", email=" + data);
} else if("vnd.android.cursor.item/phone_v2".equals(type)){ // mimetype phone
sb.append(", phone=" + data);
}
}
Log.i(TAG, sb.toString());
}
}
/**
*
* */
public void testGetContactsByNumber(){
String number = "15292328801";
Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + number);
ContentResolver resolver = getContext().getContentResolver();
Cursor cursor = resolver.query(uri, new String[]{"display_name"}, null, null, null);
if(cursor.moveToFirst()){
String name = cursor.getString(0);
Log.i(TAG, name);
}
}
/**
*
* , insert
* */
public void testAddContacts(){
/* raw_contacts , id */
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentResolver resolver = getContext().getContentResolver();
ContentValues values = new ContentValues();
long contactId = ContentUris.parseId(resolver.insert(uri, values));
/* data ( id ) */
//
uri = Uri.parse("content://com.android.contacts/data");
values.put("raw_contact_id", contactId);
values.put("mimetype", "vnd.android.cursor.item/name");
values.put("data2", " ");
resolver.insert(uri, values);
//
values.clear();
values.put("raw_contact_id", contactId);
values.put("mimetype", "vnd.android.cursor.item/phone_v2");
values.put("data2", "2");
values.put("data1", "15099144117");
resolver.insert(uri, values);
// Email
values.clear();
values.put("raw_contact_id", contactId);
values.put("mimetype", "vnd.android.cursor.item/email_v2");
values.put("data2", "2");
values.put("data1", "[email protected]");
resolver.insert(uri, values);
}
/**
*
*
* ArrayList<ContentProviderOperation>,
* */
public void testAddContacts2(){
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentResolver resolver = getContext().getContentResolver();
// :
// :
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
// 1. Google , null,
ContentProviderOperation operation = ContentProviderOperation.newInsert(uri)
.withValue("account_name", null)// account_name:Google
.build();
// 2. data name
uri = Uri.parse("content://com.android.contacts/data");
ContentProviderOperation operation2 = ContentProviderOperation.newInsert(uri)
// int previousResult: operations 0 ,
// raw_contact_id
.withValueBackReference("raw_contact_id", 0)
.withValue("mimetype", "vnd.android.cursor.item/name")
.withValue("data2", " ")
.build();
// 3. data phone
uri = Uri.parse("content://com.android.contacts/data");
ContentProviderOperation operation3 = ContentProviderOperation.newInsert(uri)
.withValueBackReference("raw_contact_id", 0)
.withValue("mimetype", "vnd.android.cursor.item/phone_v2")
.withValue("data2", "2")
.withValue("data1", "15099144117")
.build();
// 4. data Email
uri = Uri.parse("content://com.android.contacts/data");
ContentProviderOperation operation4 = ContentProviderOperation
.newInsert(uri).withValueBackReference("raw_contact_id", 0)
.withValue("mimetype", "vnd.android.cursor.item/email_v2")
.withValue("data2", "2")
.withValue("data1", "[email protected]").build();
operations.add(operation);
operations.add(operation2);
operations.add(operation3);
operations.add(operation4);
try {
resolver.applyBatch("com.android.contacts", operations);
} catch (Exception e) {
e.printStackTrace();
}
}
}