访问联系人并获取电子邮件地址

2023-11-26

我有一个用于访问联系人的代码片段。当用户单击该按钮时,联系人列表将打开,用户可以从联系人中选择一个人,并且该人的电子邮件地址应写在编辑文本上。我可以收到用户选择的人发来的电子邮件。但我无法将其设置为编辑文本。

static String email = "";


imgbtnaddfromcontacts.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v == imgbtnaddfromcontacts) {
                    try 
                    {
                        Intent intent = new Intent(Intent.ACTION_PICK,
                                ContactsContract.Contacts.CONTENT_URI);
                        startActivityForResult(intent, 1);

                    } catch (Exception e) {
                        e.printStackTrace();
                        Log.e("Error in intent : ", e.toString());
                    }
                }
            }
        });
        kimeTxt.setText(email);
    }

    @Override
    public void onActivityResult(int reqCode, int resultCode, Intent data) {
        super.onActivityResult(reqCode, resultCode, data);

        try {
            if (resultCode == Activity.RESULT_OK) {
                // Get data
                Uri contactData = data.getData();
                // Cursor
                Cursor cur = managedQuery(contactData, null, null, null, null);
                ContentResolver contect_resolver = getContentResolver();

                // List
                if (cur.moveToFirst()) {
                    String id = cur
                            .getString(cur
                                    .getColumnIndexOrThrow(ContactsContract.Contacts._ID));

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

                    Cursor emailCur = contect_resolver.query(
                            ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Email.CONTACT_ID
                                    + " = ?", new String[] { id }, null);

                    if (phoneCur.moveToFirst()) {
                        name = phoneCur
                                .getString(phoneCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                        no = phoneCur
                                .getString(phoneCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                    }

                    while (emailCur.moveToNext()) {
                        // This would allow you get several email addresses
                        // if the email addresses were stored in an array
                        email = emailCur
                                .getString(emailCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));

                        if (email != null) 
                        {
                            seciliEmail = email;
                        } else {
                            Toast.makeText(EpostaIletActivity.this,
                                    "Kişinin eposta hesabı bulunmamaktadır.",
                                    Toast.LENGTH_SHORT);
                            Log.w("Error: ", "Kişinin eposta hesabı yok.");
                        }
                    }

                    Log.e("Phone no & name & email :***: ", name + " : " + no + ":" + email);
                    // txt.append(name + " : " + no + "\n");

                    id = null;
                    name = null;
                    no = null;
                    seciliEmail = "xxx";
                    phoneCur = null;
                    emailCur.close();
                }
                contect_resolver = null;
                cur = null;
                // populateContacts();

            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
            Log.e("IllegalArgumentException :: ", e.toString());
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("Error :: ", e.toString());
        }
    }

确保你的应用程序已获得许可,否则你会得到奇怪的异常

在 AndroidManifest.xml 中:

<uses-permission android:name="android.permission.READ_CONTACTS" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

访问联系人并获取电子邮件地址 的相关文章

随机推荐