2016-08-19 7 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

これは機能しません。コードを更新してください。 –

関連する問題