2012-05-10 26 views
6

मेरे आवेदन में मुझे संपर्क के सभी उपलब्ध क्षेत्रों को देखने/संपादित करने के लिए उपयोगकर्ता को अवसर प्रदान करने की आवश्यकता है।संपर्क सभी उपलब्ध फ़ील्ड को गिनने के लिए संपर्क करें?

मुझे सभी उपलब्ध फ़ील्ड कैसे प्राप्त/देखना चाहिए - किसी भी कस्टम वाले सहित?

+0

+1 इस तरह की एक अच्छी अवधारणा के लिए। – Praveenkumar

उत्तर

9

सबसे पहले लोगों के नाम है कि अपने फोन में मौजूद सभी मिलती है:

Cursor phones = getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        null, 
        null, 
        null, 
        ContactsContract.Contacts.DISPLAY_NAME 
          + " COLLATE LOCALIZED ASC"); 
      while (phones.moveToNext()) { 

       name = phones 
         .getString(phones 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
       namelist.add(name); 
       String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       number_list.add(phoneNumber); 
      detaillist.put(name, phoneNumber); 
      } 
      phones.close(); 
} 

अब संपर्क आईडी हो और संपर्क आईडी का उपयोग करके फोन नंबर, ईमेल आईडी, पता, संगठन की तरह अन्य जानकारी प्राप्त:

protected void get_UserContactId(String item_clicked) 
     { 
      System.out.println("i m in fincution contact id"); 
      ContentResolver localContentResolver = this.getContentResolver(); 
      Cursor contactLookupCursor = 
       localContentResolver.query(
         Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, 
         Uri.encode(item_clicked)), 
         new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID}, 
         null, 
         null, 
         null); 
      try { 
      while(contactLookupCursor.moveToNext()){ 
       contactName = contactLookupCursor.getString(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME)); 
       user_contact_id = contactLookupCursor.getString(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID)); 

       System.out.println("contatc id id"+user_contact_id); 

       } 

      } 
     finally { 
      contactLookupCursor.close(); 
      } 

     } 


protected void get_UserEmail(String item_clicked) 
     { 
      Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + user_contact_id, null, null); 
      while (emails.moveToNext()) { 
       // This would allow you get several email addresses 
       user_email_id = emails.getString( 
       emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       String user_email_type=emails.getString( 
         emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
       System.out.println("the email type"+user_email_type); 
       System.out.println("email address might be"+emailAddress); 
      contact_attribute_type.add(EMAIL_TYPE[(Integer.parseInt(user_email_type))-1]); 
      contact_attribute_value.add(user_email_id); 
      } 
      emails.close(); 

     } 

     protected void get_UserNumber(String item_clicked) { 
      // TODO Auto-generated method stub 
      final String[] CONTACTS_SUMMARY_PROJECTION = new String[] { 
       ContactsContract.Contacts._ID, 
       ContactsContract.Contacts.DISPLAY_NAME, 
       ContactsContract.Contacts.STARRED, 
       ContactsContract.Contacts.TIMES_CONTACTED, 
       ContactsContract.Contacts.CONTACT_PRESENCE, 
       ContactsContract.Contacts.PHOTO_ID, 
       ContactsContract.Contacts.LOOKUP_KEY, 
       ContactsContract.Contacts.HAS_PHONE_NUMBER, 
      }; 



      String select = "(" + ContactsContract.Contacts.DISPLAY_NAME + " == \"" +item_clicked+ "\")"; 
      Cursor c = this.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); 
      this.startManagingCursor(c); 

      if (c.moveToNext()) 
      { 
       String id = c.getString(0); 
       ArrayList<String> phones = new ArrayList<String>(); 

       Cursor pCur = this.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null); 
       while (pCur.moveToNext()) 
       { 
        phones.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 
        user_number=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        String number_type=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
        System.out.println("the number type---"+number_type); 
        System.out.println("user no. in share is"+user_number); 
        contact_attribute_type.add(PHONE_TYPE[(Integer.parseInt(number_type))-1]); 
        contact_attribute_value.add(user_number); 
       // Log.i("", name_to_search+ " has the following phone number "+ pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 

       } 
       pCur.close(); 
      } 

      } 


     protected String get_UserAddress() { 
      // TODO Auto-generated method stub 
      try { 

       System.out.println(" i m in user address"); 
      Cursor address = getContentResolver().query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,null, ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + " = " + client_contact_id, null, null); 
       while (address.moveToNext()) { 
        // This would allow you get several email addresses 
        user_home_address = address.getString( 
        address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.DATA)); 
        String user_address_type=address.getString( 
          address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE)); 
        System.out.println("the user address type"+user_address_type); 
        System.out.println(" address might be"+user_home_address); 
       contact_attribute_type.add(ADDRESS_TYPE[(Integer.parseInt(user_address_type))-1]); 
       contact_attribute_value.add(user_home_address); 

       } 
       address.close(); 
      } 
      catch(Exception e) 
      { 
       System.out.println("this exception due to website"+e); 
      } 

     return(user_home_address); 
     } 


      protected void get_UserWebsite() { 
       // TODO Auto-generated method stub 
         try{ 
          Cursor websiteNameCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,new String[] {Website.URL}, ContactsContract.Data.CONTACT_ID + " = " + user_contact_id + " AND ContactsContract.Data.MIMETYPE = '" 
            + ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE 
            + "'",null,null); 

          websiteNameCursor.moveToNext(); 
          user_website=(websiteNameCursor.getString(websiteNameCursor.getColumnIndex(Website.URL))); 

          System.out.println("this is my website"+(websiteNameCursor.getString(websiteNameCursor.getColumnIndex(Website.URL)))); 
         contact_attribute_type.add("Website"); 
         contact_attribute_value.add(user_website); 

         } 
          catch(Exception e) 
          { 
          user_website=null; 
          System.out.println("this website is"+user_website); 
          System.out.println("this exception in website"+e); 
          } 



      } 

        protected void get_UserOrganization() { 
       // TODO Auto-generated method stub 
         try{ 
          Cursor organizationNameCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,new String[] {Organization.COMPANY}, ContactsContract.Data.CONTACT_ID + " = " + user_contact_id + " AND ContactsContract.Data.MIMETYPE = '" 
            + ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE 
            + "'",null,null); 

          organizationNameCursor.moveToNext(); 
          user_company=organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.COMPANY)); 
         // String user_company_type=organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.TYPE)); 
         // System.out.println("the company type "+user_company_type); 
          System.out.println("this is my organization"+user_company); 

          contact_attribute_type.add("Company"); 
         contact_attribute_value.add(user_company); 
         } 
          catch(Exception e) 
          { 
          user_company=null; 
          System.out.println("user company name is"+user_company); 
           System.out.println("this exception in org"+e); 
          } 
      } 




    } 

ऐसा करके आप संपर्क-अनुबंध के सभी क्षेत्रों को प्राप्त कर सकते हैं।

+0

Thanx, लेकिन क्या होगा अगर वहां कुछ उपयोगकर्ता परिभाषित फ़ील्ड हैं? क्या आप मुझे प्रबुद्ध कर सकते हैं? – barmaley

+0

हे बार्मेली, यह संपर्क सामग्री आपको उपयोगकर्ता द्वारा सभी दायर परिभाषित करने के लिए पूर्ण पहुंच प्रदान करती है और यदि आप अधिक भरे तक पहुंचना चाहते हैं तो पहले इस लिंक का पालन करें http://developer.android.com/reference/android/provider/ContactsContract। एचटीएमएल यह सिर्फ अवधारणा के अनुसार यूआरएल है, मैं एक अच्छा यूआरएल देता हूं जो आपको कार्यान्वयन में मदद करता है http://www.higherpass.com/Android/Tutorials/Working-With-Android-Contacts/ और कृपया मुझे वोट दें और इस टिप्पणी को पसंद करें यह आपके लिए उपयोगी है। – itechDroid

+0

ग्रेट यह काम करता है .. बहुत बहुत धन्यवाद। –

1

यह सभी संपर्क पंक्तियों में सभी कॉलम का नाम और मूल्य लॉग करता है। देशी संपर्क ऐप के साथ गैलेक्सी एस 6 पर परीक्षण किया गया। मुझे कॉलम नाम खोजने के लिए इसकी आवश्यकता है जिसका उपयोग कस्टम एसएमएस अधिसूचना ध्वनि (sec_custom_alert) के लिए किया जाता है।

private void enumerateColumns() { 
    Cursor cursor = getApplicationContext().getContentResolver().query(
      ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, null); 

    if (cursor != null && cursor.moveToFirst()) { 
     do { 
      for(int i=0; i<cursor.getColumnCount();i++) 
      { 
       Log.d("myActivity", cursor.getColumnName(i) + " : " + cursor.getString(i)); 
      } 
     } while (cursor.moveToNext()); 

     cursor.close(); 
    } 
} 
संबंधित मुद्दे