2016-08-19 4 views
1

Я пытаюсь редактировать контактные данные программно. Я хочу изменить имя контакта с номером телефона, равным 123. Вот мой Нерабочий код.android Редактирование контактов программно

Uri lookupUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode("123")); 

     // This query will return NAME and ID of conatct, associated with phone //number. 

     Cursor mcursor = getContentResolver().query(lookupUri, new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup._ID}, null, null, null); 

     //Now retrive _ID from query result 
     long idPhone = 0; 
     try { 
      if (mcursor != null) { 
       if (mcursor.moveToFirst()) { 
        idPhone = Long.valueOf(mcursor.getString(mcursor.getColumnIndex(ContactsContract.PhoneLookup._ID))); 
        String getID = String.valueOf(idPhone); 
        Toast.makeText(this.getApplicationContext(), getID, Toast.LENGTH_LONG).show(); 
        Uri uri= ContentUris.withAppendedId(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,3625); 
        ContentValues values = new ContentValues(); 
        values.put(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,"After Changed name"); 
        getContentResolver().update(uri, values, ContactsContract.CommonDataKinds.Phone._ID+"=?", new String[] {String.valueOf(idPhone)}); 

       } 
      } 
     } finally { 
      mcursor.close(); 
     } 

В настоящее время я нахожу номер телефона и получаю идентификационный номер телефона. С ID, который я пытаюсь обновить, кажется, что он не обновляет номер телефона с идентификатором.

Любая помощь будет оценена!

ответ

0

вот рабочий код для меня.

public void updateContact (String contactId, String newNumber, Activity act) throws RemoteException, OperationApplicationException{ 

    //ASSERT: @contactId alreay has a work phone number 
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    String selectPhone = Data.CONTACT_ID + "=? AND " + Data.MIMETYPE + "='" + 
        Phone.CONTENT_ITEM_TYPE + "'" + " AND " + Phone.TYPE + "=?"; 
    String[] phoneArgs = new String[]{contactId, String.valueOf(Phone.TYPE_WORK)}; 
    ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) 
      .withSelection(selectPhone, phoneArgs) 
      .withValue(Phone.NUMBER, newNumber) 
      .build()); 
    act.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
} 


//hope this also work for you. 
+0

У меня уже есть номер телефона. Я хочу изменить имя контакта с данного номера телефона. –

+0

Пройдите контактный номер как параметр в contactId – Vij

+0

Это не работает. Обновите свой код. –

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