2012-04-18 150 views
1

嘿家伙我想保存人的详细信息,如其名字姓电话号码 地址用户网站用户组织成电话簿,所以请建议 这个问题的一些解决方案。如何将联系人信息保存到电话簿中?

+1

的可能重复添加允许保存用户信息到电话簿[要添加名称,电子邮件和数量联系人数据库( http://stackoverflow.com/questions/5804617/to-add-name-email-and-number-to-contact-database) – 2012-04-18 07:09:21

回答

5

你可以通过执行这个代码

package com.contacts.in; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.content.ContentProviderOperation; 
import android.content.ContentResolver; 
import android.content.ContentValues; 
import android.content.ContextWrapper; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.provider.ContactsContract.CommonDataKinds.Phone; 
import android.provider.ContactsContract.Data; 
import android.widget.Toast; 

public class CONTACTSAVEDActivity extends Activity { 
    String displayName = "XYZ"; 
    String mobileNumber = "123456"; 
    String homeNumber = "1111"; 
    String workNumber = "2222"; 
    String emailID = "[email protected]"; 
    String company = "bad"; 
    String jobTitle = "abcd"; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     ArrayList<ContentProviderOperation> ops = 
      new ArrayList<ContentProviderOperation>(); 

     ops.add(ContentProviderOperation.newInsert(
      ContactsContract.RawContacts.CONTENT_URI) 
      .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
      .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
      .build() 
     ); 

     //------------------------------------------------------ Names 
     if(displayName != null) 
     {   
      ops.add(ContentProviderOperation.newInsert(
       ContactsContract.Data.CONTENT_URI)    
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
       .withValue(ContactsContract.Data.MIMETYPE, 
        ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
       .withValue(
        ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,  
        displayName).build() 
      ); 
     } 

     //------------------------------------------------------ Mobile Number      
     if(mobileNumber != null) 
     { 
      ops.add(ContentProviderOperation. 
       newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
       .withValue(ContactsContract.Data.MIMETYPE, 
       ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, mobileNumber) 
       .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
       ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) 
       .build() 
      ); 
     } 

          //------------------------------------------------------ Home Numbers 
          if(homeNumber != null) 
          { 
           ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
             .withValue(ContactsContract.Data.MIMETYPE, 
               ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
             .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, homeNumber) 
             .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
               ContactsContract.CommonDataKinds.Phone.TYPE_HOME) 
             .build()); 
          } 

          //------------------------------------------------------ Work Numbers 
          if(workNumber != null) 
          { 
           ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
             .withValue(ContactsContract.Data.MIMETYPE, 
               ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
             .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, workNumber) 
             .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
               ContactsContract.CommonDataKinds.Phone.TYPE_WORK) 
             .build()); 
          } 

          //------------------------------------------------------ Email 
          if(emailID != null) 
          { 
           ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
              .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
              .withValue(ContactsContract.Data.MIMETYPE, 
                ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
              .withValue(ContactsContract.CommonDataKinds.Email.DATA, emailID) 
              .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
              .build()); 
          } 

          //------------------------------------------------------ Organization 
          if(!company.equals("") && !jobTitle.equals("")) 
          { 
           ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
             .withValue(ContactsContract.Data.MIMETYPE, 
               ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE) 
             .withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, company) 
             .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK) 
             .withValue(ContactsContract.CommonDataKinds.Organization.TITLE, jobTitle) 
             .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK) 
             .build()); 
          } 

          // Asking the Contact provider to create a new contact     
          try 
          { 
           getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
          } 
          catch (Exception e) 
          {    
           e.printStackTrace(); 
           // Toast.makeText(myContext, "Exception: " + e.getMessage(), Toast.LENGTH_SHORT).show(); 
          } 

    } 
} 

此外,在清单

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> 
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission> 
+0

感谢ashu给我这个问题的解决方案,它工作正常。 – itechDroid 2012-04-18 07:08:28

+0

我很高兴帮助朋友。 – itechDroid 2012-04-18 07:09:50

+0

是的,它静静地工作。如果重复多次,它会导致重复的联系人,所以我将需要一种方法来检查一个联系人是否已经存在:) – 2014-01-31 02:27:00

相关问题