2011-06-24 6 views
11

क्या कोई जानता है कि यह कैसे करें? यहां तक ​​कि कुछ ट्यूटोरियल के लिंक भी मदद करेंगे।एंड्रॉइड में किसी संपर्क के ई-मेल, पता, उपनाम, आदि को कैसे अपडेट करें?

मैं एंड्रॉइड 2.1 के साथ एक डिवाइस का उपयोग कर रहा हूं।

+1

यह पहले से ही चार दिन तक खाया है, लेकिन आप मैं कहना है कोशिश कर रहा हूँ पूरे वाक्य लिखने के लिए समय नहीं है ... –

+0

है कि यदि आप पहले से ही इस समस्या पर 4 दिन बिताए, फिर एक पठनीय प्रश्न पूछने का प्रयास करने से आपके उत्तर देने की संभावना बढ़ सकती है। आपके प्रश्न में व्याकरण की गलतियों और टाइपों की मात्रा यह है कि ऐसा लगता है कि आपने कोई समय निवेश नहीं किया है। –

+0

यदि मेरा लक्ष्य निराशाजनक था, तो मैं बस बंद हो गया था या बंद करने के लिए वोट दिया था (दोनों जिनमें से मैंने नहीं किया था)। मैं यहां मदद करने की कोशिश कर रहा हूं: स्पष्ट, समझने योग्य व्याकरण में लिखना (और "आप" के बजाय "यू" का उपयोग नहीं करना) * निश्चित रूप से * आपको अधिक गंभीरता से लेने में मदद करेगा। मुझे आश्चर्य नहीं होगा अगर कुछ से अधिक लोग कठोर पढ़ने वाले व्याकरण के साथ प्रश्न छोड़ते हैं। –

उत्तर

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



} 
13

लिंक नीचे की जांच करें

update contact details on Android


या


बनाएं एक्सएमएल फ़ाइल "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> 

और जावा फ़ाइल बनाएँ "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;  
     } 
    } 
} 
+0

क्या आप वाकई इसे ऊपर भेजते हैं ..? या सिर्फ मौजूदा हो जाता है .. – ngesh

+0

मैंने इसे देखा .. लेकिन मैं अपने मूल्य कहां सेट करूंगा .. मैं coz से पूछ रहा हूं कि मैं कभी इस तरह से नहीं आया हूं .. कृपया बताएं – ngesh

+0

हाँ यह मौजूदा संपर्क अपडेट है। मेरे पास ईमेल, नाम इत्यादि अपडेट है ... मैंने जांच की है कि यह काम कर रहा है। – Nikhil

2

मैं अद्यतन ईमेल, नंबर प्रथम नाम और अंतिम नाम में मेरे संपर्क था, और फिर जोड़ने के ईमेल और नंबर नहीं करता है, तो rowId ईमेल और संख्या का उपयोग कर भी।

निजी शून्य 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(); 
     } 
    } 
+0

और आपको संपर्क आईडी का उपयोग करके RowId मिलता है। – bhoomika

+0

यह उत्तर दिए गए प्रश्न के लिए सबसे पूरा है। –

संबंधित मुद्दे