Esempio n. 1
0
  public int addContact(DataItem dataItem) {
    if (dataItem.getContact_position() != -1) {
      deleteContact(dataItem.getContact_position());
    }
    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());

    // ------------------------------------------------------ Names
    if (dataItem.getNameCard() != null) {
      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,
                  dataItem.getNameCard())
              .build());
    }
    // ------------------------------------------------------ Photo
    if (dataItem.getImage() != null) {
      Bitmap bitmap = BitmapFactory.decodeFile(dataItem.getImage());
      if (bitmap != null) {
        bitmap = Bitmap.createScaledBitmap(bitmap, 1024, 768, true);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte imageInByte[] = stream.toByteArray();
        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, imageInByte)
                .build());
      }
    }
    // ------------------------------------------------------ Company
    if (dataItem.getNameCompany() != null) {
      ops.add(
          ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
              .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex)
              .withValue(
                  ContactsContract.Data.MIMETYPE,
                  ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
              .withValue(
                  ContactsContract.CommonDataKinds.Organization.COMPANY, dataItem.getNameCompany())
              .build());
    }
    // ------------------------------------------------------ Phone
    for (int index = 0; index < dataItem.getListPhone().size(); index++) {
      PhoneItem phoneItem = dataItem.getListPhone().get(index);
      if (phoneItem.getType() == 0) {
        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, phoneItem.getPhoneName())
                .withValue(
                    ContactsContract.CommonDataKinds.Phone.TYPE,
                    ContactsContract.CommonDataKinds.Phone.TYPE_WORK)
                .build());
      } else if (phoneItem.getType() == 1) {
        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, phoneItem.getPhoneName())
                .withValue(
                    ContactsContract.CommonDataKinds.Phone.TYPE,
                    ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
                .build());
      } else {
        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, phoneItem.getPhoneName())
                .withValue(
                    ContactsContract.CommonDataKinds.Phone.TYPE,
                    ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK)
                .build());
      }
    }
    // ------------------------------------------------------ Email
    for (int index = 0; index < dataItem.getListEmail().size(); index++) {
      EmailItem emailItem = dataItem.getListEmail().get(index);
      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.DATA, emailItem.getEmailName())
              .withValue(
                  ContactsContract.CommonDataKinds.Email.TYPE,
                  ContactsContract.CommonDataKinds.Email.TYPE_WORK)
              .build());
    }
    // ------------------------------------------------------ Web
    for (int index = 0; index < dataItem.getListWeb().size(); index++) {
      WebItem webItem = dataItem.getListWeb().get(index);
      ops.add(
          ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
              .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex)
              .withValue(
                  ContactsContract.Data.MIMETYPE,
                  ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE)
              .withValue(ContactsContract.CommonDataKinds.Website.DATA, webItem.getWebName())
              .withValue(
                  ContactsContract.CommonDataKinds.Website.TYPE,
                  ContactsContract.CommonDataKinds.Website.TYPE_WORK)
              .build());
    }

    // ------------------------------------------------------ Address
    for (int index = 0; index < dataItem.getListAddress().size(); index++) {
      AddressItem addressItem = dataItem.getListAddress().get(index);
      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.STREET,
                  addressItem.getAddressName())
              .withValue(
                  ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
                  ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME)
              .build());
    }
    // Asking the Contact provider to create a new contact
    try {
      context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
      int contactId = getContactId();
      return contactId;
    } catch (Exception e) {
      // e.printStackTrace();
      // Toast.makeText(context, "Exception: " + e.getMessage(),
      // Toast.LENGTH_SHORT).show();
      return -1;
    }
  }