2009-12-13 26 views
6

कोई भी एंड्रॉइड से संपर्क सूची कैसे प्राप्त कर सकता है इस पर प्रकाश डाल सकता है?एंड्रॉइड संपर्क सूची

मैं डायलर ऐप में वही सूची प्राप्त करना चाहता हूं। लेकिन मुझे बहुत से संपर्क मिल रहे हैं जो नीचे दिए गए कोड के साथ डायलर सूची पर नहीं हैं।

ContentResolver cr = getContentResolver(); 
Cursor cursor = cr.query(Contacts.People.CONTENT_URI, null, null, null, Contacts.ContactMethods.DEFAULT_SORT_ORDER); 
startManagingCursor(cursor); 

अग्रिम धन्यवाद।

उत्तर

2

जो आपको लगता है ठीक है। क्या आप "बहुत से संपर्क प्राप्त कर सकते हैं जो डायलर सूची पर नहीं हैं" पर विस्तृत जानकारी दे सकते हैं? क्या यह एंड्रॉइड लोगों को बना रहा है? या यह है कि आप लोगों को ईमेल पते वाले लोगों को देख रहे हैं लेकिन कोई फोन नंबर नहीं है (जो डायलर में दिखाई नहीं दे सकता है)?

ध्यान दें कि Contacts.People एंड्रॉइड 1.6 और उसके बाद के संस्करण के लिए है। उस प्रदाता को एंड्रॉइड 2.0 से शुरू किया गया है, जिसे ContactsContract प्रदाताओं के सेट द्वारा प्रतिस्थापित किया गया है।

+0

मैं कल्पना डेवलपर्स के एक बहुत ContactsContract का उपयोग नहीं होगा, क्योंकि वे 1.6 संगतता चाहते पर जाने की कोशिश ... – Eno

0

ठीक है, पहले उत्तर के लिए धन्यवाद। बस इस पर एक प्रकाश डालने के लिए।

मैं सिर्फ अपने फोन पर संपर्कों के लिए ईमेल प्राप्त करना चाहता था। "MyContacts" समूह। मैंने देखा कि यह समूह संपर्कसूची गतिविधि का उपयोग करता है।

मैं इस तरह somethig कर समाप्त हो गया:

c = cr.query(myGroupUri, mEmailsProjection, null, null, null); 
.... 

c.close(); 

c = cr.query(
    Contacts.ContactMethods.CONTENT_URI, 
     mContactsProjection, contactIds, null, null 
); 
.... 
c.close(); 

बस पहले और उसके बाद ईमेल तालिका समूह पूछे।

6

इस स्निपेट का प्रयास करें:

import android.app.ListActivity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.provider.ContactsContract.CommonDataKinds.Phone; 
import android.widget.SimpleCursorAdapter; 

public class ContactList extends ListActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[] {Phone._ID, Phone.DISPLAY_NAME, Phone.NUMBER}, null, null, null); 

     startManagingCursor(cursor); 

     String[] from = new String[] { Phone.DISPLAY_NAME, Phone.NUMBER}; 

     int[] to = new int[] { R.id.name_entry, R.id.number_entry}; 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list_entry, cursor, from, to); 
     this.setListAdapter(adapter); 
    } 
} 

एक्सएमएल फ़ाइल है:

list_entry.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="6dip"> 
     <TextView 
      android:id="@+id/name_entry" 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
     android:textSize="18dip"/> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:id="@+id/number_entry" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
     android:textSize="18dip"/> 
    </LinearLayout> 
+2

आवश्यक है <का उपयोग करता है-अनुमति एंड्रॉयड: नाम = "एंड्रॉयड। अनुमति.READ_CONTACTS "> अन्यथा यह उपयोगी है। –

+1

startManagingCursor को बहिष्कृत किया गया है ... – drulabs

+0

@KKD: इसे क्या बदलना चाहिए? –

1

This एंड्रॉयड संपर्क सूची गतिविधि के बुनियादी कार्यान्वयन है।

0

अभिप्राय का उपयोग करके संपर्क सूची

  startActivityForResult(new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI),1);} 
संबंधित मुद्दे