Как обновить электронную почту, адрес, псевдоним и т. д. контакта в Android?

Кто-нибудь знает как это сделать? Даже ссылки на некоторые учебники помогут.

Я использую устройство с Android 2.1.


person ngesh    schedule 24.06.2011    source источник
comment
Четыре дня уже съела, а писать целые предложения нет времени...   -  person Joachim Sauer    schedule 29.06.2011
comment
Я пытаюсь сказать, что если вы уже потратили 4 дня на эту проблему, то попытка задать читаемый вопрос может повысить ваши шансы на получение ответа. Количество грамматических ошибок и опечаток в вашем вопросе создает впечатление, что вы совсем не потратили время.   -  person Joachim Sauer    schedule 29.06.2011
comment
Если бы обескураживание было моей целью, я бы просто проголосовал против или проголосовал за закрытие (оба из которых я не делал). Я пытаюсь помочь здесь: написание в ясной, понятной грамматике (и не использование u вместо вас) определенно поможет вам восприниматься более серьезно. Я не удивлюсь, если несколько человек пропустят вопросы с трудной для чтения грамматикой.   -  person Joachim Sauer    schedule 29.06.2011
comment
@devA, пожалуйста, проверьте ответ, я обновил его.   -  person Nikhil    schedule 29.06.2011


Ответы (2)


Пожалуйста, проверьте ссылку ниже

обновить контактную информацию на Android


ИЛИ


Создайте 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>

И создайте 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;    
        }
    }
}
person Nikhil    schedule 24.06.2011
comment
Я видел это.. но где я буду устанавливать свои значения.. Я спрашиваю, потому что я никогда не сталкивался с таким способом.. подскажите, пожалуйста - person ngesh; 29.06.2011
comment
да, это обновление существующего контакта. у меня есть обновленная электронная почта, имя и т. д. я проверил, что это работает. - person Nikhil; 29.06.2011
comment
на какую версию андроида обновляется... Я использую 2.1.. извините за слишком много вопросов.,. - person ngesh; 29.06.2011
comment
нет проблем, чувак .. я протестировал его в эмуляторе Android 2.2, и я проверю его на эмуляторе Android 2.1. - person Nikhil; 29.06.2011

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

private void updateContact() {

        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();
            }
        }
person bhoomika    schedule 09.08.2017
comment
и вы получаете RowId, используя идентификатор контакта. - person bhoomika; 09.08.2017
comment
Этот ответ является наиболее полным для данного вопроса. - person Marco Altran; 20.09.2017