从电话联系人中获取姓名、电话号码和电子邮件地址[关闭]

Posted

技术标签:

【中文标题】从电话联系人中获取姓名、电话号码和电子邮件地址[关闭]【英文标题】:Getting Name,Phone Number and Email Address From Phone Contacts [closed] 【发布时间】:2014-02-12 01:11:50 【问题描述】:

我需要创建一个项目,从“电话默认”联系人列表中的选定联系人那里获取 Name,Phone Number and Email Address。 步骤: 当我单击应用程序中的按钮时,它将打开或转到默认电话联系人。之后我选择一个电话联系人,它将返回到我的应用程序,并且有 3 个文本视图来放置姓名、电子邮件和电话号码。我怎样才能做到这一点? 提前感谢

【问题讨论】:

尝试一下并展示您的代码。不要指望别人只是为你做你的工作 【参考方案1】:

我这样做是为了android 2.2 Froyo 发布:基本上使用eclipse 来创建class,例如:public class SomePickContactName extends Activity

然后插入此代码。记得添加我的代码版本中引用的私有类变量和CONSTANTS:

protected void onCreate(Bundle savedInstanceState) 

  super.onCreate(savedInstanceState);       
  Intent intentContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
  startActivityForResult(intentContact, PICK_CONTACT);
//onCreate

public void onActivityResult(int requestCode, int resultCode, Intent intent) 


  if (requestCode == PICK_CONTACT)
           
    getContactInfo(intent);         
    // Your class variables now have the data, so do something with it. 
  
//onActivityResult

protected void getContactInfo(Intent intent)


   Cursor cursor =  managedQuery(intent.getData(), null, null, null, null);      
   while (cursor.moveToNext()) 
              
       String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
       name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 

       String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

       if ( hasPhone.equalsIgnoreCase("1"))
           hasPhone = "true";
       else
           hasPhone = "false" ;

       if (Boolean.parseBoolean(hasPhone)) 
       
        Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
        while (phones.moveToNext()) 
        
          phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        
        phones.close();
       

       // Find Email Addresses
       Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, null);
       while (emails.moveToNext()) 
       
        emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
       
       emails.close();

    Cursor address = getContentResolver().query(
                ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,
                null,
                ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + " = " + contactId,
                null, null);
    while (address.moveToNext()) 
     
      // These are all private class variables, don't forget to create them.
      poBox      = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
      street     = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
      city       = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
      state      = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
      postalCode = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
      country    = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
      type       = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));
      //address.moveToNext()   
    //while (cursor.moveToNext())        
   cursor.close();
//getContactInfo

【讨论】:

成功了,谢谢你的帮助

以上是关于从电话联系人中获取姓名、电话号码和电子邮件地址[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

我无法从电话联系人中加载电子邮件地址

如何从联系人列表中获取电子邮件 ID、姓名和号码

如何有效地获取本地电话联系人

如何从 Android 中的 Vision OCR 结果文本中提取姓名、电话号码和电子邮件地址?

如何从联系人列表中获取电子邮件地址?

从 Android 联系人中获取电子邮件和电话