Hi,

I am trying to create a new Contact with a photo, but my code doesn´t
work properly. The thing is that the first time I execute the code the
new contact doesn´t appear on the Contacts List, but the second time I
execute it the contact appears twice and properly. I have tried the
same code but omitting the section that includes the photo and the
contact appears on the contact list fine the first time I try, so the
problem must be related to the photo inclusion.

I cannot understand why the first execution doesn´t work and the
second one does. As I said, when I create the contact for the second
time the new entrance appears twice on the contact list, with the
contact´s name, photo, and everything, so I guess the problem should
not be on the encoding.

I hope someone can help me.
Thanks a lot for yout time.

Here is my code:

..............

// Get the Contact´s Picture
int id =
cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
Uri photoUri =
ContentUris.withAppendedId(ContactsContract.Data.CONTENT_URI, id);
Cursor c = getContentResolver().query(photoUri, new String[]
{ContactsContract.CommonDataKinds.Photo.PHOTO}, null, null, null);

byte[] photoBytes = null;
if (c.moveToFirst()) {
        photoBytes = c.getBlob(0);

..........

protected void createNewContact(String name, String mobileNumber,
String emailAddress, byte[] photo) {
        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(name != 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,
                    name).build()
            );
        }

        //------------------------------------------------------ Mobile
Number
        .......

        //------------------------------------------------------ Email
        ........

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

        // Asking the Contact provider to create a new
contact
        try
        {
                ContentProviderResult[] result =
getContentResolver().applyBatch(ContactsContract.AUTHORITY,
ops);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            Log.d(TAG, "Exception: " + e.getMessage());
        }

        Toast.makeText(TraspasoActivity.this, "New Contact " + name +
" created !!", Toast.LENGTH_SHORT).show();
    }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to