You should specify the mimetype in your selection.
.withSelection(ContactsContract.CommonDataKinds.Phone._ID + "=? AND " +
Data.MIMETYPE + "='" +
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'",
new String[]{contact_id})
If you haven't figured this out yet, give that a go. I found updating contacts to be very tricky in getting the selection arguments right.