2011-08-23 17 views
6

क्या प्रत्येक संपर्क के लिए अलग-अलग प्रश्न किए बिना सभी संपर्कों के लिए सभी फोन नंबर प्राप्त करने का कोई तरीका है? (एंड्रॉइड 2.0+ का उपयोग कर)। यदि आपके पास 100 से अधिक संपर्क हैं (कम अंत फोन पर अनुपयोगी), तो मुझे आश्चर्य हुआ कि क्या मैं एक और अधिक कुशल क्वेरी कर सकता हूं।सभी संपर्कों और सभी फोन नंबरों को लोड करने का कुशल तरीका (एंड्रॉइड 2.0)

वर्तमान में मुझे सभी मान्य संपर्कों के साथ एक कर्सर मिल रहा है CONTract.Contacts.IN_VISIBLE_GROUP संपर्क तो प्रत्येक संपर्क के लिए प्रत्येक संपर्क के लिए एक अलग क्वेरी है।

स्निपेट प्राप्त संपर्क सिर्फ नाम और देखने कुंजी geting से:

Uri uri = ContactsContract.Contacts.CONTENT_URI; 

String[] projection = new String[] { 
    ContactsContract.Contacts.DISPLAY_NAME, 
    ContactsContract.Contacts.LOOKUP_KEY}; 

फिर प्रत्येक संपर्क खोजना कुंजी का उपयोग कर।

Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey); 
Uri res = ContactsContract.Contacts.lookupContact(contentResolver, lookupUri); 

String[] projection = new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER}; 

...

Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, phoneProjection, selection, selectionArgs, sortOrder); 
+0

करने के लिए सौंपा एंड्रॉयड में सभी संपर्कों कि इस सवाल का लिंक हैं? – scottyab

+0

आपको फ़ॉर्म को दो बार सबमिट करने का अधिकार होना चाहिए। अच्छी जगह। बंद करने के लिए वोट दिया। – scottyab

उत्तर

15

चेक नीचे दिए गए कोड में मदद करता है अगर

public ArrayList<PhoneContactInfo> getAllPhoneContacts() { 
    Log.d("START","Getting all Contacts"); 
    ArrayList<PhoneContactInfo> arrContacts = new ArrayList<PhoneContactInfo>(); 
    PhoneContactInfo phoneContactInfo=null;  
    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
    Cursor cursor = context.getContentResolver().query(uri, new String[] {ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone._ID}, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC"); 
    cursor.moveToFirst(); 
    while (cursor.isAfterLast() == false) 
    { 
     String contactNumber= cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
     int phoneContactID = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID)); 


     phoneContactInfo = new PhoneContactInfo(); 
     phoneContactInfo.setPhoneContactID(phoneContactID);    
     phoneContactInfo.setContactName(contactName);     
     phoneContactInfo.setContactNumber(contactNumber); 
     if (phoneContactInfo != null) 
     { 
      arrContacts.add(phoneContactInfo); 
     } 
     phoneContactInfo = null; 
     cursor.moveToNext(); 
    }  
    cursor.close(); 
    cursor = null; 
    Log.d("END","Got all Contacts"); 
    return arrContacts; 
} 
+1

अच्छा, 8.7 से 2.4 के बीच लोड लोड समय :) – scottyab

+0

देशी में ताज़ा संपर्क डालने के बाद मैं मूल संपर्क आईडी कैसे प्राप्त कर सकता हूं – AndroidRaji

0

आप का प्रयोग क्यों d?

Contract.Contacts.IN_VISIBLE_GROUP

Contract.Contacts.IN_VISIBLE_GROUP

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