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

前端之家收集整理的这篇文章主要介绍了android – 访问联系人并获取电子邮件地址前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用于访问联系人的代码段.当用户单击该按钮时,联系人列表将打开,用户可以从联系人中选择一个人,并且该人的电子邮件地址应该在edittext上写入.我可以收到用户选择的人的电子邮件.但我无法将其设置为edittext.
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);
                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,ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                    + " = ?",new String[] { id },null);

                    Cursor emailCur = contect_resolver.query(
                            ContactsContract.CommonDataKinds.Email.CONTENT_URI,ContactsContract.CommonDataKinds.Email.CONTACT_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());
        }
    }

解决方法

使用以下代码从所选联系人处获取电子邮件地址 –
public void doLaunchContactPicker(View view) {
    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
    startActivityForResult(contactPickerIntent,CONTACT_PICKER_RESULT);
}

@Override
protected void onActivityResult(int requestCode,Intent data) 
{
    if (resultCode == RESULT_OK) {
        switch (requestCode) 
        {
        case CONTACT_PICKER_RESULT:
            Cursor cursor = null;
            String email = "",name = "";
            try {
                Uri result = data.getData();
                Log.v(DEBUG_TAG,"Got a contact result: " + result.toString());

                // get the contact id from the Uri
                String id = result.getLastPathSegment();

                // query for everything email
                cursor = getContentResolver().query(Email.CONTENT_URI,Email.CONTACT_ID + "=?",null);

                int nameId = cursor.getColumnIndex(Contacts.DISPLAY_NAME);

                int emailIdx = cursor.getColumnIndex(Email.DATA);

                // let's just get the first email
                if (cursor.moveToFirst()) {
                    email = cursor.getString(emailIdx);
                    name = cursor.getString(nameId);
                    Log.v(DEBUG_TAG,"Got email: " + email);
                } else {
                    Log.w(DEBUG_TAG,"No results");
                }
            } catch (Exception e) {
                Log.e(DEBUG_TAG,"Failed to get email data",e);
            } finally {
                if (cursor != null) {
                    cursor.close();
                }
                EditText emailEntry = (EditText) findViewById(R.id.editTextv);
                EditText personEntry = (EditText) findViewById(R.id.person);
                emailEntry.setText(email);
                personEntry.setText(name);
                if (email.length() == 0 && name.length() == 0) 
                {
                    Toast.makeText(this,"No Email for Selected Contact",Toast.LENGTH_LONG).show();
                }
            }
            break;
        }

    } else {
        Log.w(DEBUG_TAG,"Warning: activity result not ok");
    }
}

doLaunchContactPicker是按钮的onclick使用任何你想要的代码.

猜你在找的Android相关文章