14

मैंने फोन से व्हाट्सएप संपर्क प्राप्त करने का प्रयास किया है और मुझे व्हाट्सएप संपर्क की कुल गणना मिलती है लेकिन RawContacts से व्हाट्सएप नंबर और नाम कैसे प्राप्त करें जो मुझे नहीं पता। मैंने समाधान खोजने की कोशिश की है लेकिन इसके लिए सटीक समाधान नहीं मिल सकता है। क्रिप्या मेरि सहायता करे।एंड्रॉइड से व्हाट्सएप संपर्क कैसे प्राप्त करें?

मैंने अपना कोड नीचे दिया है।

ContentResolver cr = context.getContentResolver(); 

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

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

       String projection[] = { ContactsContract.CommonDataKinds.Phone.NUMBER }; 

       if(c != null) { 
        if (c.getCount() > 0) { 
         while (c.moveToNext()) { 

          String whatsappContactId = c.getString(c.getColumnIndex(ContactsContract.RawContacts.Data._ID)); 

          Cursor dataCursor = cr.query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
            projection, 
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
            new String[]{whatsappContactId}, null); 
          // You can also read RawContacts.CONTACT_ID to read the 
          // ContactsContract.Contacts table or any of the other related ones. 
          String number = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER)); 
          myWhatsappContacts.add(number); 

         } 
        } 
       } 

       showLogI(TAG, " WhatsApp contact size : " + myWhatsappContacts.size()); 

उत्तर

38

मैं अपने सवाल का समाधान मिल गया है तो मैं अपने जवाब को यहाँ रखा .. यह दूसरों ..

पहले पढ़ें के लिए उपयोगी हो सकता है और के एंड्रॉयड संपर्क डेटा स्टोर आरेख को समझने के लिए उस के बाद यह आसान है की कोशिश पूरे संपर्क प्रवाह को समझने के लिए। स्निपेट के नीचे तीन स्तरीय डेटा मॉडल आरेख दिया गया है।

कोड स्निपेट्स

//This class provides applications access to the content model. 
ContentResolver cr = context.getContentResolver(); 

//RowContacts for filter Account Types 
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 for Store Whatsapp Contact 
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); 

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

showLogI(TAG, " WhatsApp contact size : " + myWhatsappContacts.size()); 

यहाँ शो एंड्रॉयड संपर्क डाटा स्टोर आरेख enter image description here

+0

महान विवरण है! – activesince93

+0

प्रत्येक तालिका का उद्देश्य क्या है? ऐप्स को डालने वाले डेटा को मैं कहां से प्राप्त कर सकता हूं, और यहां दिखाए गए अनुसार उनके इरादे का उपयोग करने में भी सक्षम हूं: http://stackoverflow.com/q/35992096/878126? –

+0

टेलीग्राम संपर्कों और अन्य ऐप्स के साथ यह काम? – Webserveis

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