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를 받고 있습니다. ID를 업데이트하려고하는데 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

그건 작동하지 않습니다. 코드를 업데이트하십시오. –

관련 문제