入门安卓接触 [英] Getting android contacts

查看:121
本文介绍了入门安卓接触的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

林试图让所有的联系人有电子邮件地址的列表。

目前即时通讯使用这种code,但我得到了很多重复的姓名和电子邮件。我要的只是一个人,一个电子邮件。有没有一种方法,我可以合并的联系人,同时询问他们?

另外我只是在寻找一个> 2.0解决方案。

 私人无效的init(){

    ContentResolver的CR = getContentResolver();
    光标CUR = cr.query(ContactsContract.Contacts.CONTENT_URI,NULL,NULL,NULL,NULL);
    如果(cur.getCount()大于0){
    而(cur.moveToNext()){
        字符串ID = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
    字符串名称= cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        光标emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID +=?,新的String [] {ID},NULL);
        而(emailCur.moveToNext()){
                字符串email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                Log.e(电子邮件,名称++电子邮件);
            }
            emailCur.close();
        }

    }
 

解决方案

尝试以下工作code。当你的工作,那么请接受这个答案。

 公共类DDDDDDDDDD延伸活动{
    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
       //的setContentView(R.layout.main);
        readContacts();
    }

    公共无效readContacts(){
         ContentResolver的CR = getContentResolver();
         光标CUR = cr.query(ContactsContract.Contacts.CONTENT_URI,NULL,NULL,NULL,NULL);

         如果(cur.getCount()大于0){
            而(cur.moveToNext()){
                字符串ID = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                字符串名称= cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                如果(的Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))大于0){
                    的System.out.println(姓名:+姓名+,ID:+ ID);

                    //获取电话号码
                    光标pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,空,
                                           ContactsContract.CommonDataKinds.Phone.CONTACT_ID +=?,
                                           新的String [] {ID},NULL);
                    而(pCur.moveToNext()){
                          字符串手机= pCur.getString(
                                 pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                          的System.out.println(手机+电话);
                    }
                    pCur.close();


                    //获取电子邮件和类型


                   光标emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                            空值,
                            ContactsContract.CommonDataKinds.Email.CONTACT_ID +=?,
                            新的String [] {ID},NULL);
                    而(emailCur.moveToNext()){
                        //这将让你获得多个电子邮件地址
                            //如果电子邮件地址被存储在一个阵列
                        字符串email = emailCur.getString(
                                      emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                        串emailType = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));

                        整型= emailCur.getInt(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
                        串customLabel = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.LABEL));
                        CharSequence的CustomemailType = ContactsContract.CommonDataKinds.Email.getTypeLabel(this.getResources(),类型,customLabel);

                      //System.out.println("Email+电子邮件+电子邮件类型:+ emailType);
                    }
                    emailCur.close();

                    //获取注意.......
                    字符串noteWhere = ContactsContract.Data.CONTACT_ID +=?AND+
                            ContactsContract.Data.MIMETYPE +=;
                    的String [] noteWhereParams =新的String [] {ID,
                    ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};

                     光标noteCur = cr.query(ContactsContract.Data.CONTENT_URI,空,
                             noteWhere,noteWhereParams,NULL);
                    如果(noteCur.moveToFirst()){
                        字符串注= noteCur.getString(
                        noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
                      的System.out.println(请注意+注);
                    }
                    noteCur.close();

                    //获取邮政地址....

                    字符串addrWhere = ContactsContract.Data.CONTACT_ID
                            ?=和+ + ContactsContract.Data.MIMETYPE +=;
                    的String [] addrWhereParams =新的String [] {ID,
                        ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
                    光标addrCur = cr.query(ContactsContract.Data.CONTENT_URI,
                                NULL,NULL,NULL,NULL);
                    而(addrCur.moveToNext()){
                        字符串邮政信箱= addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
                        串街道= addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
                        字符串的城市= addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
                        字符串状态= addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
                        字符串邮政code = addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POST code));
                        字符串全国= addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
                        字符串类型= addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));

                        //做一些事情与这些....

                    }
                    addrCur.close();

                    //获取即时信使.........
                    串imWhere = ContactsContract.Data.CONTACT_ID +=?与
                    + ContactsContract.Data.MIMETYPE +=;
                    的String [] imWhereParams =新的String [] {ID,
                        ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE};
                    光标imCur = cr.query(ContactsContract.Data.CONTENT_URI,
                            空,imWhere,imWhereParams,NULL);
                    如果(imCur.moveToFirst()){
                        字符串imName = imCur.getString(
                                 imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));
                        字符串imType;
                        imType = imCur.getString(
                                 imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE));
                    }
                    imCur.close();

                    //获取组织.........

                    字符串orgWhere = ContactsContract.Data.CONTACT_ID +=和+ ContactsContract.Data.MIMETYPE +=;
                    的String [] orgWhereParams =新的String [] {ID,
                        ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
                    光标orgCur = cr.query(ContactsContract.Data.CONTENT_URI,
                                空,orgWhere,orgWhereParams,NULL);
                    如果(orgCur.moveToFirst()){
                        字符串ORGNAME = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
                        字符串标题= orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
                    }
                    orgCur.close();


                }
            }
       }
    }

}
 

Im trying to get a list of all the contacts and there email address.

Currently im using this code, however I get a lot of duplicate names and emails. What i want is just one person and one email. Is there a way I can merge contacts while querying for them?

Also im just looking for a > 2.0 solution.

    private void init() {

    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
    if (cur.getCount() > 0) {
    while (cur.moveToNext()) {
        String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
    String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id},null); 
        while (emailCur.moveToNext()) { 
                String email = emailCur.getString( emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                Log.e("Email",name+" "+email);
            } 
            emailCur.close();
        }

    }

解决方案

try out below working code. when you get working then please accept this answers.

public class dddddddddd extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.main);
        readContacts();
    }

    public void readContacts(){
         ContentResolver cr = getContentResolver();
         Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);

         if (cur.getCount() > 0) {
            while (cur.moveToNext()) {
                String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                    System.out.println("name : " + name + ", ID : " + id);

                    // get the phone number
                    Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                                           ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
                                           new String[]{id}, null);
                    while (pCur.moveToNext()) {
                          String phone = pCur.getString(
                                 pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                          System.out.println("phone" + phone);
                    }
                    pCur.close();


                    // get email and type


                   Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                            new String[]{id}, null);
                    while (emailCur.moveToNext()) {
                        // This would allow you get several email addresses
                            // if the email addresses were stored in an array
                        String email = emailCur.getString(
                                      emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                        String emailType = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));

                        int type = emailCur.getInt(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
                        String customLabel = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.LABEL));
                        CharSequence CustomemailType = ContactsContract.CommonDataKinds.Email.getTypeLabel(this.getResources(), type, customLabel);

                      //System.out.println("Email " + email + " Email Type : " + emailType);
                    }
                    emailCur.close();

                    // Get note.......
                    String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " +
                            ContactsContract.Data.MIMETYPE + " = ?";
                    String[] noteWhereParams = new String[]{id,
                    ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};

                     Cursor noteCur = cr.query(ContactsContract.Data.CONTENT_URI, null, 
                             noteWhere, noteWhereParams, null);
                    if (noteCur.moveToFirst()) {
                        String note = noteCur.getString(
                        noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
                      System.out.println("Note " + note);
                    }
                    noteCur.close();

                    //Get Postal Address....

                    String addrWhere = ContactsContract.Data.CONTACT_ID 
                            + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
                    String[] addrWhereParams = new String[]{id,
                        ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
                    Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI,
                                null, null, null, null);
                    while(addrCur.moveToNext()) {
                        String poBox = addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
                        String street = addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
                        String city = addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
                        String state = addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
                        String postalCode = addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
                        String country = addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
                        String type = addrCur.getString(
                                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));

                        // Do something with these....

                    }
                    addrCur.close();

                    // Get Instant Messenger.........
                    String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " 
                    + ContactsContract.Data.MIMETYPE + " = ?";
                    String[] imWhereParams = new String[]{id,
                        ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE};
                    Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI,
                            null, imWhere, imWhereParams, null);
                    if (imCur.moveToFirst()) {
                        String imName = imCur.getString(
                                 imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));
                        String imType;
                        imType = imCur.getString(
                                 imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE));
                    }
                    imCur.close();

                    // Get Organizations.........

                    String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
                    String[] orgWhereParams = new String[]{id,
                        ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
                    Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,
                                null, orgWhere, orgWhereParams, null);
                    if (orgCur.moveToFirst()) {
                        String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
                        String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
                    }
                    orgCur.close();


                }
            }
       }
    }

}

这篇关于入门安卓接触的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆