2016-08-19 3 views
1

Ich versuche, Kontaktdaten programmatisch zu bearbeiten. Ich möchte den Kontaktnamen mit der Telefonnummer 123 ändern. Hier ist mein Non-working-Code.android Bearbeiten von Kontakten programmatisch

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(); 
     } 

Momentan finde ich die Telefonnummer und bekomme die ID der Telefonnummer. Mit ID versuche ich es zu aktualisieren, es scheint nicht die Telefonnummer mit ID zu aktualisieren.

Jede Hilfe wird geschätzt!

Antwort

0

hier funktioniert Code für mich.

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

Ich habe bereits eine Telefonnummer. Ich möchte den Kontaktnamen von der angegebenen Telefonnummer ändern. –

+0

Pass Kontaktnummer als Parameter in contactId – Vij

+0

Das funktioniert nicht. Bitte aktualisieren Sie Ihren Code. –

Verwandte Themen