Как да актуализирам имейл, адрес, псевдоним и т.н. на контакт в 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 вместо you) определено ще помогне да бъдете взети по-сериозно. Няма да се изненадам, ако повече от няколко души пропуснат въпроси с трудна за четене граматика.   -  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
на коя версия на android се актуализира... Използвам 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