2016-06-08 48 views

回答

0

其复制过去的,也许它会帮助你

 String DisplayName = "XYZ"; 
    String MobileNumber = "123456"; 
    String HomeNumber = "1111"; 
     String WorkNumber = "2222"; 
     String emailID = "[email protected]"; 
    String company = "bad"; 
    String jobTitle = "abcd"; 


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

我在这里询问地址字段地址只有不存在@ shivpal jodha – android

1

我有同样的问题。经过很长一段时间我得到了一个解决方案,所以你可以使用下面的代码:

public boolean addContact() { 
    if (Build.VERSION.SDK_INT >= 23) { 
     if (haveContactPermission()) { 
      ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
      int rawContactInsertIndex = ops.size(); 

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

      ops.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, TextViewUserFullName.getText()) // Name of the person 
        .build()); 


      ops.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, homephone) // Number of the person 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME).build()); // Type of mobile number 

      ops.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, mobilephone) // Number of the person 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE).build()); // Type of mobile number 

      ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, getBitmapFromURL(image)) 
        .build()); 

      ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email) 
        .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_HOME) 
        .build()); 


      ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, TextViewWifeName.getText()).build()); 

      try { 
       ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
       return true; 
      } catch (RemoteException e) { 
       Toast.makeText(ContactInfoZone.this, "" + e.toString(), Toast.LENGTH_SHORT).show(); 
       // error 
       return false; 
      } catch (OperationApplicationException e) { 
       Toast.makeText(ContactInfoZone.this, "" + e.toString(), Toast.LENGTH_SHORT).show(); 
       // error 
       return false; 
      } 
     } else { 
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_CONTACTS}, 
        PERMISSION_CONTACT_NUMBER); 
      return false; 
     } 

    } else { 


     ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
     int rawContactInsertIndex = ops.size(); 

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

     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, TextViewUserFullName.getText()) // Name of the person 
       .build()); 



     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(
         ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, homephone) // Number of the person 
       .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME).build()); // Type of mobile number 

     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(
         ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, mobilephone) // Number of the person 
       .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE).build()); // Type of mobile number 

     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, getBitmapFromURL(image)) 
       .build()); 

     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email) 
       .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_HOME) 
       .build()); 


     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, TextViewWifeName.getText()).build()); 

     try { 
      ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
      return true; 
     } catch (RemoteException e) { 
      Toast.makeText(ContactInfoZone.this, "" + e.toString(), Toast.LENGTH_SHORT).show(); 
      // error 
      return false; 
     } catch (OperationApplicationException e) { 
      Toast.makeText(ContactInfoZone.this, "" + e.toString(), Toast.LENGTH_SHORT).show(); 
      // error 
      return false; 
     } 
    } 
} 

我认为这将帮助你。

+0

if和else代码有什么区别? – android

+0

确定thks ....你能给我一些关于快速阅读联系的提示....阅读400联系其采取2分钟....请告诉我任何快速的方式来查询与所有数据的联系人。 – android

+0

有两个if条件数。 版本的第一个是否在23以上? 如果版本低于23,那么没有任何问题,我们可以直接添加联系人。 否则如果条件是23以上然后(如果条件是第二的话)我们想要求联系权限是否给出,如果是,那么我们可以添加联系人,如果没有则创建请求权限。 –

相关问题