2016-06-03 3 views
1

내 앱에서는 gmail 및 Facebook.With와 같은 다른 계정이 아닌 전화로 연락처를 받아야합니다. 내 코드는 연락처가 있지만 문제는 Gmail과 같은 모든 소스에서 가져 오는 것입니다. 페이스 북 등전화 번호부 만 받으세요 android

코드

contactResolver = context.getContentResolver(); 
     Cursor cur = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC"); 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       contactsModel = new ContactsModel(); 

       id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       contactsModel.name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 


       phoneCursor = contactResolver.query(
         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
         new String[]{id}, null); 

       while (phoneCursor.moveToNext()) { 
        // Do something with phones 
        int phoneType = phoneCursor.getInt(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
        String phoneNo = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        //you will get all phone numbers according to it's type as below switch case. 
        switch (phoneType) { 
         case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: 
          phone = phoneNo; 
          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: 
          phone = phoneNo; 
          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: 
          phone = phoneNo; 
          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE: 
          phone = phoneNo; 
          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER: 
          phone = phoneNo; 
          break; 
         default: 
          phone = phoneNo; 
          break; 
        } 

        listPhones.add(phoneNo); 
       } 


       /*get email*/ 
       emailCursor = contactResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null); 

       while (emailCursor.moveToNext()) { 
        //String emai = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
        int type = emailCursor.getInt(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
        String s = (String) ContactsContract.CommonDataKinds.Email.getTypeLabel(context.getResources(), type, ""); 
        listEmails.add(emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA))); 

       } 
       contactsModel.emails = listEmails; 
       contactsModel.numbers = listPhones; 

       listContacts.add(contactsModel); 
       listEmails = new ArrayList<>(); 
       listPhones = new ArrayList<>(); 
       emailCursor.close(); 
       phoneCursor.close(); 


      } 


     } 

     cur.close(); 


     return listContacts; 

그래서 난 단지 전화 번호부에서 연락처를 얻을 것이다 방법에 대해 설명합니다. 쿼리 아래

답변

0

시도 :

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1", 
      null, 
      null 
    ); 

경우, IN_VISIBLE_GROUP : 1 = 지역, 0 = 구글 계정

+0

감사하지만 난 Gmail 연락처를 치우는거야하지만 난 여전히 무엇입니까이 코드 hotmail ka contacts –

+0

미안하지만 나는 hotmail에 대해 모른다. –

0
Hope it will help you 


    public void readContacts() { 
     StringBuffer sb = new StringBuffer(); 
     sb.append("......Contact Details....."); 
     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
       null, null, null); 
     String phone = null; 
     String emailContact = null; 
     String emailType = null; 
     String image_uri = ""; 
     Bitmap bitmap = null; 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       String id = cur.getString(cur 
         .getColumnIndex(ContactsContract.Contacts._ID)); 
       String name = cur 
         .getString(cur 
           .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

       image_uri = cur 
         .getString(cur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI)); 
       if (Integer 
         .parseInt(cur.getString(cur 
           .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
        System.out.println("name : " + name + ", ID : " + id); 
        sb.append("\n Contact Name:" + name); 
        Cursor pCur = cr.query(
          ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
          null, 
          ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
            + " = ?", new String[] { id }, null); 
        while (pCur.moveToNext()) { 
         phone = pCur 
           .getString(pCur 
             .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         sb.append("\n Phone number:" + phone); 
         System.out.println("phone" + phone); 
        } 
        pCur.close(); 

        Cursor emailCur = cr.query(
          ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
          null, 
          ContactsContract.CommonDataKinds.Email.CONTACT_ID 
            + " = ?", new String[] { id }, null); 
        while (emailCur.moveToNext()) { 
         emailContact = emailCur 
           .getString(emailCur 
             .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
         emailType = emailCur 
           .getString(emailCur 
             .getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
         sb.append("\nEmail:" + emailContact + "Email type:" + emailType); 
         System.out.println("Email " + emailContact 
           + " Email Type : " + emailType); 

        } 

        emailCur.close(); 
       } 

       if (image_uri != null) { 
        //System.out.println(Uri.parse(image_uri)); 
        try { 
         bitmap = MediaStore.Images.Media 
           .getBitmap(this.getContentResolver(), 
             Uri.parse(image_uri)); 
         sb.append("\n Image in Bitmap:" + bitmap); 
         // System.out.println(bitmap); 

        } catch (FileNotFoundException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

       } 


       sb.append("\n........................................"); 
      } 

      textDetail.setText(sb); 
     } 
    } 
+0

Nah가이 작업을하지 못합니다. –