2012-05-25 96 views
3

是否有人知道获取保存在Android设备上的所有联系人及其所有属性(姓名,电话,电子邮件等)的舒适方式?如何获取所有联系人及其所有属性

我需要一个从Android 1.5到4.0的解决方案。

THX很多

回答

8

获得姓名和电话号码使用此代码::

private void getNameNumber(){ 
     Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
     String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
         ContactsContract.CommonDataKinds.Phone.NUMBER }; 
     Cursor names = getContentResolver().query(uri, projection, null, null, null); 

     int indexName = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
     int indexNumber = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
     names.moveToFirst(); 
     do { 

      String name = names.getString(indexName); 
      Log.e("Name new:", name); 
      String number = names.getString(indexNumber); 
      Log.e("Number new:","::"+number); 

     } while (names.moveToNext()); 
    } 

,并得到所有细节使用下面的代码并修改它根据您的要求。

private void getDetails(){ 
     Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
      String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
         ContactsContract.CommonDataKinds.Phone.NUMBER ,ContactsContract.CommonDataKinds.Email.DATA }; 
     Cursor names = getContentResolver().query(uri, projection, null, null, null); 

     int indexName = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
     int indexNumber = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
     names.moveToFirst(); 
     do { 

      String name = names.getString(indexName); 
      Log.e("Name new:", name); 
      String number = names.getString(indexNumber); 
      Log.e("Number new:","::"+number); 

     } while (names.moveToNext()); 
     // email 


      while (cur.moveToNext()) { 
       String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       Cursor email = cr.query( 
         ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, 
         ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
           new String[]{id}, null); 
       while (email.moveToNext()) { 
        //to get the contact names 
        // if the email addresses were stored in an array 
        String emailid = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
        Log.e("Email id ::", emailid); 
        String emailType = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
        Log.e("Email Type ::", emailType); 

       } 
       email.close(); 
      } 


     //address 
      while (cur.moveToNext()) { 
      String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      Cursor addrCur = cr.query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,null, 
        ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID+ " = ?", 
        new String[] { id },null); 
      while(addrCur.moveToNext()) { 
       String street = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); 
       Log.e("Street ::", street); 
       String city = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); 
       Log.e("City ::", city); 
       String state = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); 
       Log.e("State ::", state); 
       String postalCode = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); 
       Log.e("Postal Code ::", postalCode); 
      } 
      addrCur.close(); 

     } 
    } 
+0

感谢您的code.Its工作正常。但我不能得到地址的详细信息..即使它不能够在logcat打印..请帮助我 – AndroidRaji

+0

cur退出电子邮件while循环时为空。您应该在电子邮件循环中使用地址查询。 – 2017-03-13 06:48:08

相关问题