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();  
            }   
        }  
    }