如何在输入“To”字段时获得电子邮件地址的建议?

时间:2012-06-23 13:44:42

标签: android api email gmail email-address

我正在编写一个应用程序,它将使用Java Mail外部库发送电子邮件。我搜索了一周,了解如何向用户显示电子邮件地址建议,例如Gmail中显示的建议。

任何帮助都是适当的!

4 个答案:

答案 0 :(得分:1)

获取电子邮件列表,并使用autocompleteTextView在您键入时显示它们。

将适配器设置为textBox:

ArrayAdapter<String> namesAdapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_dropdown_item_1line, names);
searchBox.setAdapter(namesAdapter);

searchBox.setOnItemClickListener(new OnItemClickListener() {

       public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
            String email = searchBox.getText().toString(); //or use the position to reference the email address you want.

        });
}

答案 1 :(得分:1)

据我所知,Gmail使用Gmail AddressBook作为建议。对于您的建议,您可以使用手机的通讯录,如果您已将其与Gmail地址簿同步,则可以在通讯录中找到它们。

希望这有帮助!如果您需要更具体的内容,请随时询问。

答案 2 :(得分:0)

“更智能的联系人”http://smartrcontacts.com/是一个很好的应用程序,适用于Gmail,Android和iPhone,可以同步所有联系人n合并他们的电子邮件tel mob等,然后你可以调用你想要的dbase电子邮件。

答案 3 :(得分:0)

好的,经过一番挖掘,这就是我发现的。获取有关自动完成TextView的答案,添加以下内容即可获得我想要的内容。

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
    while (cursor.moveToNext()) { 
        String contactId = cursor.getString(cursor.getColumnIndex( 
                ContactsContract.Contacts._ID)); 
        String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
        if (Boolean.parseBoolean(hasPhone)) { 
            // You know it has a number so now query it like this
            Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null); 
            while (phones.moveToNext()) { 
                String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));                 
            } 
            phones.close(); 
        }

        Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId, null, null); 
        while (emails.moveToNext()) { 
            // This would allow you get several email addresses 
            String emailAddress = emails.getString( 
                    emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
        } 
        emails.close(); 
    }
    cursor.close();