Как получить адрес электронной почты в реквизитах контакта - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь разработать приложение, которое будет считывать контакты с телефона и отображать имена контактов в виде списка. При щелчке элемента в списке просмотра информация о контакте, такая как имя, адрес электронной почты и номер телефона, будет отображаться в другой операции. Я могу отобразить имя и номер телефона, но не могу отобразить адрес электронной почты. Может ли кто-нибудь помочь внести необходимые изменения, чтобы прочитать адрес электронной почты и отобразить его в контактной информации?

        var cursor : Cursor? = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            null,null,null,null)
            startManagingCursor(cursor)
        var selected_columns = arrayOf(
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.NUMBER,
            ContactsContract.CommonDataKinds.Phone._ID)
        var to =  intArrayOf(android.R.id.text1)
        simple = SimpleCursorAdapter(
                this,android.R.layout.simple_list_item_1,cursor,selected_columns,to,0)
        my_listview.adapter = simple

        my_listview.setOnItemClickListener { parent, view, position, id ->

                //Log.i("Details","Opened")
            val name =  cursor?.getString(cursor?.getColumnIndex(selected_columns[0]))
            val phone =  cursor?.getString(cursor?.getColumnIndex(selected_columns[1]))
            val intent = Intent(this, Contactdetails::class.java)
            intent.putExtra("personname",name)
            intent.putExtra("personnumber",phone)
            startActivity(intent)

        }


    #Edited and added the function to get emails
    fun getemails(context:Context):ArrayList<String>{
        val emails = ArrayList<String>()
        var mEmail = ""
        val mEmailCursor: Cursor? = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
            null, ContactsContract.CommonDataKinds.Email.CONTACT_ID,null, null);
        if (mEmailCursor!!.getCount() > 0) {
            while (mEmailCursor.moveToNext()) {
                mEmail = mEmailCursor.getString(mEmailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)).trim();
                if (mEmail != null) {
                    emails.add(mEmail);
                }
            }
        }
        mEmailCursor.close();
        return emails;
    }

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Используя этот код, чтобы найти ссылку на все электронные письма с вашим контактом, просто передайте contact_id

public ArrayList<String> getEmail(Context context, String contact_id) {
    ArrayList<String> emails = new ArrayList<>();

    String mEmail = "";
    Cursor mEmailCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=?", new String[]{contact_id}, null);
    if (mEmailCursor.getCount() > 0) {
        while (mEmailCursor.moveToNext()) {
            mEmail = mEmailCursor.getString(mEmailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)).trim();
            if (mEmail != null) {
                emails.add(mEmail);
            }
        }
    }
    mEmailCursor.close();
    return emails;
}
0 голосов
/ 25 октября 2019
    fun getemails(context:Context):ArrayList<String>{
    val emails = ArrayList<String>()
    var mEmail = ""
    val mEmailCursor: Cursor? = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
        null, ContactsContract.CommonDataKinds.Email.CONTACT_ID,null, null);
    if (mEmailCursor!!.getCount() > 0) {
        while (mEmailCursor.moveToNext()) {
            mEmail = mEmailCursor.getString(mEmailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)).trim();
            if (mEmail != null) {
                emails.add(mEmail);
            }
        }
    }
    mEmailCursor.close();
    return emails;
}
...