2013-05-08 2 views
1

У меня есть этот кодОбновление контактов с несколькими телефонными номерами

public void updateContact (String contactId, String newNumber) {ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

    String selectPhone = Data.CONTACT_ID + "=? AND " + Data.MIMETYPE + "='" + 
        Phone.CONTENT_ITEM_TYPE + "'"; 

    String[] phoneArgs = new String[]{contactId}; 
    ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) 
        .withSelection(selectPhone, phoneArgs) 
        .withValue(Phone.NUMBER, newNumber) 
        .build()); 
      try { getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
      } catch (RemoteException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (OperationApplicationException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      }  
    } 

, который я взял отсюда How to update contact number using Android и изменил его, чтобы пройти через все мои контакты и добавить к каждому из них приставкой моего собственного.

Я бегу через все контакты и я обеспечиваю с этим String id = phones.getString(phones.getColumnIndex(ContactsContract.Contacts._ID));

ид Контакта к вышеупомянутой функции. Но некоторые контакты. Особенно те, у которых есть несколько номеров, а некоторые из которых имеют только одно число, не изменяются, чтобы получить новый префикс, даже если данный идентификатор верен ?! , Я что-то пропустил, я не знаю, что менять. Я думаю, что это может быть тип mime, но я могу себе представить, что кто-то не может использовать предустановленные типы Android для телефонов и использовать собственный тип. У меня нет ошибок. Спасибо всем за ваше время !!!

ответ

1

Я, наконец, изменил свой код, чтобы нормально работать, я передавал идентификатор контакта, но мне нужен идентификатор телефона ... вот правильный код.

public void updateContact (String contactId, String newNumber) {   


    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    String selectPhone = Data._ID + "=? AND " + Data.MIMETYPE + "='" + 
         Phone.CONTENT_ITEM_TYPE + "'"; 

      String[] phoneArgs = new String[]{contactId}; 
      ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) 
        .withSelection(selectPhone, phoneArgs) 
        .withValue(Phone.NUMBER, newNumber) 
        .build()); 
      try { 
       getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
      } catch (RemoteException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (OperationApplicationException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      }  
    } 

Не забудьте установить соответствующие разрешения на андроид манифеста (контакты записи)

Смежные вопросы

 Смежные вопросы