Как обновить контактный номер с помощью Android

Я изучаю андроид. Я пытаюсь оптимизировать контактный номер программным путем. Может ли кто-нибудь помочь мне, пожалуйста, как я могу это сделать.

Мое усилие:

String lNumber = pCur.getString( pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); ContentValues values = new ContentValues(); Uri lPhoneUri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, ContactsContract.CommonDataKinds.Phone.NUMBER); values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "45323333")); getContentResover().update(lPhoneUri, values, ContactsContract.CommonDataKinds.Phone.NUMBER+"=?", new String[] { lNumber }); 

Solutions Collecting From Web of "Как обновить контактный номер с помощью Android"

Я думаю, вы там очень много. Следующее использует новый API для обновления телефонного номера WORK контакта, предположите, что этот контакт уже имеет номер рабочего телефона.

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

Попробуй это

  String where = ContactsContract.Data.DISPLAY_NAME + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ? AND " + String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE) + " = ? "; String[] params = new String[] {Cname, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)}; ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection(where, params) .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,"9999999999") // .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "Sample Name 21") .build()); //email String where3 = ContactsContract.Data.DISPLAY_NAME + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] params3 = new String[] {Cname,"vnd.android.cursor.item/email_v2"}; ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection(where3, params3) .withValue(ContactsContract.CommonDataKinds.Email.DATA,"a@b.com") .build()); 

Используя это, я могу обновить контактные данные.

Просто небольшое изменение, если вам нужно обновить какой-либо другой телефон, чем рабочий телефон, вы можете иметь метод, который имеет это как параметр.

 public void updateContact (String contactId, String newNumber, String phoneType) 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, phoneType}; ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) .withSelection(selectPhone, phoneArgs) .withValue(Phone.NUMBER, newNumber) .build()); this.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); } 

Этот класс может помочь обновить контакт.

 public class UpdateContact extends Activity { private EditText txtName,txtPh; private Button btnUpdate; private TextView txt; private static final String TAG_ID="id"; private static final String TAG_NAME = "name"; private static final String TAG_PHNO = "phNo"; private static int id; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_update_contact); txtName=(EditText)findViewById(R.id.txtNname); txtPh=(EditText)findViewById(R.id.txtNPhNo); btnUpdate=(Button)findViewById(R.id.btnUpdate); txt=(TextView)findViewById(R.id.txtId); Intent i=getIntent(); id=i.getIntExtra(TAG_ID,0); txtName.setText(i.getStringExtra(TAG_NAME)); txtPh.setText(i.getStringExtra(TAG_PHNO)); //to update contact on button click you can apply this btnUpdate.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { // TODO Auto-generated method stub DatabaseHandler handler=new DatabaseHandler(UpdateContact.this); Contact contact=new Contact(); contact.setID(id); contact.setName(txtName.getText().toString()); contact.setPhNo(txtPh.getText().toString()); handler.UpdateContact(contact); finish(); } }); } }