¿Alguien sabe cómo hacer eso? Incluso los enlaces a algunos tutoriales ayudarían.¿Cómo actualizar el correo electrónico, la dirección, el alias, etc. de un contacto en Android?
Estoy usando un dispositivo con Android 2.1.
¿Alguien sabe cómo hacer eso? Incluso los enlaces a algunos tutoriales ayudarían.¿Cómo actualizar el correo electrónico, la dirección, el alias, etc. de un contacto en Android?
Estoy usando un dispositivo con Android 2.1.
i found it myself.. thanks everyone...
public void updateContact(String name, String phone,ContentResolver cr,Activity a)
{
String[] arr = {"DISPLAY_NAME","MIMETYPE","TYPE"};
String where = ContactsContract.Data.DISPLAY_NAME + " = ? AND " +
ContactsContract.Data.MIMETYPE + " = ? AND " +
String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE) + " = ? ";
String[] params = new String[] {name,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE,
String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE_HOME)};
Cursor phoneCur = a.managedQuery(ContactsContract.Data.CONTENT_URI, null, null, null, null);
for(int i = 0; i<phoneCur.getColumnCount()-1;i++)
{
if(phoneCur.moveToNext())
{
String s = phoneCur.getString(phoneCur.getColumnIndex(Data.DISPLAY_NAME));
String s1 = phoneCur.getString(phoneCur.getColumnIndex(Data.MIMETYPE));
String s2 = phoneCur.getString(phoneCur.getColumnIndex(Phone.TYPE));
if(s!=null)
{
Log.e("@@@@@@@@@@@@#############",s);
}
if(s1!=null)
{
Log.e("111111111111#############",s1);
}
if(s2!=null)
{
Log.e("2222222222222#############",s2);
}
}
}
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(where, params)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "5657")
// .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "Sample Name 21")
.build());
String where1 = ContactsContract.Data.DISPLAY_NAME + " = ? AND " +
ContactsContract.Data.MIMETYPE + " = ?";
String[] params1 = new String[] {name,"vnd.android.cursor.item/name"};
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(where1, params1)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "Sample Name")
.build());
String[] params2 = new String[] {name,"vnd.android.cursor.item/email_v2"};
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(where1, params2)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, "Hi There")
.build());
// phoneCur.close();
try {
cr.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Por favor, consulte más abajo enlace
update contact details on Android
O
Crear archivo XML "editcontmain.xml"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:layout_width="fill_parent" android:id="@+id/EditContacts"
android:onClick="@string/clickEvent" android:layout_height="wrap_content"
android:text="Edit Contacts" />
</LinearLayout>
Y Crear archivo de java "EditContMain.java"
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
public class EditContMain extends Activity {
private static final int PICK_CONTACT = 0;
private static final int EDIT_CONTACT = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.editcontmain);
}
public void clickHandler(View v) {
switch (v.getId()) {
case R.id.EditContacts:
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
break;
default:
break;
}
}
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case (PICK_CONTACT):
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
Log.e("c", c.getCount() + "");
if (c.moveToFirst()) {
String contactId = c.getString(c
.getColumnIndex(ContactsContract.Contacts._ID));
Toast.makeText(this, "ID = " + contactId, Toast.LENGTH_LONG)
.show();
Intent i = new Intent(Intent.ACTION_EDIT);
i.setData(Uri
.parse(ContactsContract.Contacts.CONTENT_LOOKUP_URI
+ "/" + contactId));
startActivityForResult(i, EDIT_CONTACT);
}
}
break;
}
}
}
¿Estás seguro de que upDates contact ..? o simplemente obtiene el existente ... – ngesh
Lo vi ... pero ¿dónde voy a establecer mis valores ...? Estoy preguntando porque nunca me he encontrado de esta manera ... puedo decir por favor – ngesh
sí, es actualizar el contacto existente. Tengo un correo electrónico de actualización, un nombre, etc ... lo he comprobado que está funcionando. – Nikhil
que era la actualización de mi contacto en el correo electrónico, el número, nombre y apellido, y si el correo electrónico y el número no tienen a continuación, añadir usando rowId email y number también.
privada updateContact void() {
if (getRawContactId(contactId).length() == 0) {
AppUtils.showToast(AddContactsActivity.this, getString(R.string.sorry_msg));
} else {
String name = etFname.getText().toString()+ " "+etLname.getText().toString().trim();
ContentResolver cr = getContentResolver();
String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] emailParams = new String[]{contactId, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE};
String[] nameParams = new String[]{contactId, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE};
String[] numberParams = new String[]{contactId, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE};
ArrayList<android.content.ContentProviderOperation> ops = new ArrayList<android.content.ContentProviderOperation>();
ops.add(android.content.ContentProviderOperation.newUpdate(android.provider.ContactsContract.Data.CONTENT_URI)
.withSelection(where, nameParams)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, etFname.getText().toString().trim())
.withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, etLname.getText().toString().trim())
.build());
if (categoryContactData.getContact_mobile().length() > 0) {
ops.add(android.content.ContentProviderOperation.newUpdate(android.provider.ContactsContract.Data.CONTENT_URI)
.withSelection(where, numberParams)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, etPhone.getText().toString().trim())
.build());
} else {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
//.withValue(ContactsContract.Data.RAW_CONTACT_ID, getRawContactId(contactId))
.withValue(ContactsContract.Data.RAW_CONTACT_ID, getRawContactId(contactId))
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, etPhone.getText().toString().trim())
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
.build());
}
if (categoryContactData.getContact_email().length() > 0) {
ops.add(android.content.ContentProviderOperation.newUpdate(android.provider.ContactsContract.Data.CONTENT_URI)
.withSelection(where, emailParams)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, etEmail.getText().toString().trim())
.build());
} else {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValue(ContactsContract.Data.RAW_CONTACT_ID, getRawContactId(contactId))
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, etEmail.getText().toString().trim())
.build());
}
try {
cr.applyBatch(ContactsContract.AUTHORITY, ops);
setResult(RESULT_OK);
finish();
// Toast.makeText(AddContactsActivity.this, "Updated the phone number of 'Sample Name' to: ", Toast.LENGTH_SHORT).show();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
y obtienes RowId usando Id de contacto. – bhoomika
Esta respuesta es la más completa para la pregunta dada. –
Ya se ha comido cuatro días, pero usted no tiene el tiempo para escribir frases enteras ... –
que estoy tratando de decir que si ya Pasó 4 días sobre este problema, y luego tratar de hacer una pregunta legible podría mejorar sus posibilidades de obtener una respuesta. La cantidad de errores gramaticales y errores tipográficos que tenía en su pregunta hace que parezca que no invirtió tiempo en absoluto. –
Si desalentador fuera mi objetivo, simplemente habría votado negativamente o habría votado a favor de cerrar (ambas cosas que no hice). Estoy tratando de ayudar aquí: escribir con una gramática clara y comprensible (y no usar "u" en lugar de "usted") * definitivamente * ayudará a tomarse más en serio. No me sorprendería que más de unas pocas personas salten las preguntas con gramática difícil de leer. –