2017-02-09 10 views
19

मैं व्हाट्सएप प्रोफाइल चित्र और संख्या प्राप्त करना चाहता हूं लेकिन सामग्री का उपयोग कर रहा हूं रिसेल्वर मुझे निम्नलिखित स्निपेट कोड का उपयोग करके केवल नाम और संख्या मिल जाएगी।मैं whatsApp प्रोफाइल चित्र प्राप्त करना चाहता हूं लेकिन केवल नाम और संपर्क संख्या प्राप्त कर रहा हूं?

private void showContactWhatsApp(){ 

    ContentResolver cr = getContentResolver(); 

    Cursor contactCursor = cr.query(
      ContactsContract.RawContacts.CONTENT_URI, 
      new String[]{ContactsContract.RawContacts._ID, 
        ContactsContract.RawContacts.CONTACT_ID}, 
      ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?", 
      new String[]{"com.whatsapp"}, 
      null); 


    ArrayList<String> myWhatsappContacts = new ArrayList<>(); 

    if (contactCursor != null) { 
     if (contactCursor.getCount() > 0) { 
      if (contactCursor.moveToFirst()) { 
       do { 
        //whatsappContactId for get Number,Name,Id ect... from ContactsContract.CommonDataKinds.Phone 
        String whatsappContactId = contactCursor.getString(contactCursor.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID)); 

        if (whatsappContactId != null) { 
         //Get Data from ContactsContract.CommonDataKinds.Phone of Specific CONTACT_ID 
         Cursor whatsAppContactCursor = cr.query(
           ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
           new String[]{ContactsContract.CommonDataKinds.Phone.CONTACT_ID, 
             ContactsContract.CommonDataKinds.Phone.NUMBER, 
             ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME}, 
           ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
           new String[]{whatsappContactId}, null); 

         if (whatsAppContactCursor != null) { 
          whatsAppContactCursor.moveToFirst(); 
          String id = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID)); 
          String name = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
          String number = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

          whatsAppContactCursor.close(); 

          //Add Number to ArrayList 
          myWhatsappContacts.add(number); 

          Log.e(TAG, " WhatsApp contact id : " + id); 
          Log.e(TAG, " WhatsApp contact name : " + name); 
          Log.e(TAG, " WhatsApp contact number : " + number); 
         } 
        } 
       } while (contactCursor.moveToNext()); 
       contactCursor.close(); 
      } 
     } 
    } 

    Log.e(TAG, " WhatsApp contact size : " + myWhatsappContacts.size()); 
} 

मैं व्हाट्सएप प्रोफाइल तस्वीर जैसे सिंकम ऐप प्राप्त करना चाहता हूं।

मैं नाम, संख्या और थंबनेल के साथ व्हाट्सएप संपर्क सूची प्राप्त करने का इंतजार करता हूं।

उत्तर

4

सबसे पहले मैं सिर्फ RawContact और Contact के बीच के अंतर को दोहराना चाहता हूं। उत्तरार्द्ध पूर्व के एक समूह (एक व्यक्ति का प्रतिनिधित्व) होता है (एक खाता का प्रतिनिधित्व करता है)।

छवि के लिए आपके पास क्या उपयोग है, इस पर निर्भर करता है कि कुल संपर्क लाने और वहां चयनित प्रोफ़ाइल छवि का उपयोग करना बेहतर हो सकता है जिसे Photo contract के माध्यम से हासिल किया जा सकता है।

Uri photoUri; 
Cursor photoCur = cr.query(
    ContactsContract.Data.CONTENT_URI, null, 
    ContactsContract.Data.CONTACT_ID + "=" + aggregateContactId + " AND " + 
    ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", 
    null, null 
); 
if (photoCur != null && photoCur.moveToFirst()) { 
    Uri photoId = ContentUris.withAppendedId(Contacts.CONTENT_URI, aggregateContactId); 
    photoUri = Uri.withAppendedPath(person, Contacts.Photo.CONTENT_DIRECTORY); 
} 

आप WhatsApp तस्वीर के लिए विशेष रूप का उपयोग करें, सबसे पहले यह सुनिश्चित तस्वीर डिवाइस पर कैश है है, तो (सिर्फ झूठी झंडे से बचने के लिए, जबकि परीक्षण - WhatsApp में संपर्कों पूर्ण छवि को खोलने और आप यकीन है कि यह कैश की गई है हो सकता है) तो आपको छवि के लिए एक अलग लुकअप करना होगा (एपीआई 14 से):

Uri photoId = ContentUris.withAppendedId(RawContacts.CONTENT_URI, whatsappContactId); 
Uri photoUri = Uri.withAppendedPath(photoId, RawContacts.DisplayPhoto.CONTENT_DIRECTORY); 
+0

क्या यह ओपी के लिए काम नहीं करता है? –

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

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