精华内容
下载资源
问答
  • Android手机通讯录下载

    热门讨论 2013-10-18 17:54:30
    Android手机通讯录下载 和ListView实现A-Z排序
  • 手机通讯录

    2015-05-29 10:17:45
    c语言通讯录制作代码,需要的同学可以下载一下,里面的c基础知识还是比较全面的
  • 开发手机通讯录

    2015-01-05 18:57:51
    开发手机通讯录,只适合初学者,有一定基础的同学不要下载此源代码
  • 小蔡手机通讯录

    2014-05-11 10:42:42
    基于Android4.4开发的一个手机通讯录,具有添加联系人,查看联系人,管理编辑联系人,智能查找联系人,删除及批量删除,备份/还原数据,以及手机联系人导入等功能,界面简洁美观,欢迎下载使用。
  • XC手机通讯录

    2014-06-04 17:13:56
    基于Android4.4开发的一个手机通讯录,具有添加联系人,查看联系人,管理编辑联系人,智能查找联系人,删除及批量删除,备份/还原数据,以及手机联系人导入等功能,界面简洁美观,欢迎下载使用。
  • 相信很多做销售的同学都遇到过这种烦心事:领导甩过来一个含有...有的同学会选择下载一些通讯录助手app,可是对存储空间有限的手机来说,多装一个app都是极大的浪费。其实不止做销售的同学,其他同学换手机后重新导...

    相信很多做销售的同学都遇到过这种烦心事:领导甩过来一个含有客户联系方式的Excel文件,需要把联系方式添加到通讯录。数量少还好说,即使手动添加也就几分钟。几百上千个,手动操作能把人逼疯,更不用说有的还包含地址、邮箱等,如果没有合适的工具帮忙,简直就是噩梦。有的同学会选择下载一些通讯录助手app,可是对存储空间有限的手机来说,多装一个app都是极大的浪费。

    cdcac91801ad151b8a08abe918e289a7.png

    其实不止做销售的同学,其他同学换手机后重新导入通讯录也同样痛苦。在经历过多次痛苦后,我写了个网页版通讯录助手,可以快速把Excel表格联系人批量导入手机。界面如下:

    1015655f66e14dce7ad1be4016870629.png

    通讯录小助手

    使用方法:把表格联系人信息复制粘贴到此程序,点击下载按钮,就能得到一个vcf格式的通讯录文件。把文件发送到手机上,在手机通讯录点击导入此文件,一切就完成了。

    几百个联系人也能快速导入、批量操作。

    安卓手机教程:

    1. 把下载的vcf通讯录文件发送到手机上;

    2. 在手机打开通讯录,找到导入功能(一般在通讯录APP的设置里面);

    3. 点击导入,在磁盘上找到这个vcf文件,然后导入;

    4. 导入成功!

    iPhone教程:

    导入iPhone通讯录中,操作稍微麻烦一些。把导出的vcf文件作为邮件附件,发送到iPhone的邮件APP中,然后在邮件APP中打开就能导入。

    有了这个工具,以后再需要导入通讯录,打开网站就行了,用完就走,节省了手机空间,又可以随时查看历史导入文件,避免在处理多个文件时漏掉或重复导入。

    希望能帮到需要的同学,谢谢阅读。

    展开全文
  • c++手机通讯录代码.

    2012-06-12 11:58:07
    c++手机通讯录代码,用于实现手机通讯管理,欢迎广大爱好者下载
  • 运行在手机上的一款通讯录程序,是用Java编写的,现在附上所有的源码,请在Eclipse下尝试运行这套程序,这样能够减少您的很多步骤。有兴趣的朋友好好研讨一下。Java通讯录手机版源码(1 folders, 2 files, 1.38 KB, ...

    运行在手机上的一款通讯录程序,是用Java编写的,现在附上所有的源码,请在Eclipse下尝试运行这套程序,这样能够减少您的很多步骤。有兴趣的朋友好好研讨一下。

    Java通讯录手机版源码

    (1 folders, 2 files, 1.38 KB, 351.82 KB in total.)

    

    

     源码

    (1 folders, 2 files, 1.38 KB, 350.44 KB in total.)

    

    

     PhoneBook

    (6 folders, 6 files, 2.64 KB, 349.05 KB in total.)

    .classpath 242 bytes

    .eclipseme 243 bytes

    .project 541 bytes

    

    PhoneBook.jad 259 bytes

    

    .eclipseme.tmp

    (2 folders, 2 files, 1.38 KB, 125.39 KB in total.)

    

    

    emulation

    (0 folders, 4 files, 45.73 KB, 45.73 KB in total.)

    

    PhoneBook.jad 285 bytes

    PhoneBook.jar 44.06 KB

    

     verified

    (2 folders, 2 files, 1.38 KB, 78.28 KB in total.)

    

    

    classes

    (1 folders, 2 files, 1.38 KB, 75.51 KB in total.)

    

    

     com

    (1 folders, 2 files, 1.38 KB, 74.13 KB in total.)

    

    

     north

    (1 folders, 2 files, 1.38 KB, 72.74 KB in total.)

    

    

     phonebook

    (2 folders, 3 files, 2.96 KB, 71.36 KB in total.)

    

    PhoneBookMIDlet.class 1.57 KB

    

    model

    (0 folders, 10 files, 21.49 KB, 21.49 KB in total.)

    Account.class 3.23 KB

    ApplicationException.class 1.00 KB

    Index.class 2.21 KB

    

    Model$AccountFilter.class 904 bytes

    Model$IndexFilter.class 1.13 KB

    Model.class 6.25 KB

    Preference.class 1.15 KB

    UserModel.class 4.26 KB

    

     ui

    (0 folders, 21 files, 46.91 KB, 46.91 KB in total.)

    ConfirmationDialog.class 2.58 KB

    DetailInfoUI.class 2.56 KB

    Dialog.class 2.50 KB

    DialogListener.class 196 bytes

    IndexFunctionUI$ListIndex.class 658 bytes

    IndexFunctionUI.class 1.82 KB

    ListMerchantGroupUI.class 3.40 KB

    ListPhoneUI.class 2.77 KB

    LoginUI.class 2.55 KB

    

    MerchantGroupDetailInfoUI.class 2.07 KB

    NewPhoneUI.class 3.88 KB

    SearchPhoneUI.class 2.42 KB

    Title.class 1.68 KB

    UIController$1.class 1.75 KB

    UIController$EventID.class 1.39 KB

    UIController.class 8.63 KB

    WaitCanvas$1.class 816 bytes

    WaitCanvas.class 2.32 KB

    WelcomeUI.class 1.58 KB

    

     libs

    (0 folders, 2 files, 1.38 KB, 1.38 KB in total.)

    

    

    .settings

    (0 folders, 4 files, 1.68 KB, 1.68 KB in total.)

    

    org.eclipse.core.resources.prefs 92 bytes

    org.eclipse.jdt.core.prefs 214 bytes

    

    bin

    (1 folders, 5 files, 12.54 KB, 83.24 KB in total.)

    icon.png 308 bytes

    logo.gif 4.15 KB

    

    welcome.png 6.70 KB

    

     com

    (1 folders, 2 files, 1.38 KB, 70.70 KB in total.)

    

    

     north

    (1 folders, 2 files, 1.38 KB, 69.32 KB in total.)

    

    

     phonebook

    (2 folders, 3 files, 2.92 KB, 67.93 KB in total.)

    

    PhoneBookMIDlet.class 1.54 KB

    

    model

    (0 folders, 10 files, 20.25 KB, 20.25 KB in total.)

    Account.class 3.17 KB

    ApplicationException.class 1.00 KB

    Index.class 2.15 KB

    

    Model$AccountFilter.class 867 bytes

    Model$IndexFilter.class 1.09 KB

    Model.class 5.52 KB

    Preference.class 1.15 KB

    UserModel.class 3.94 KB

    

     ui

    (0 folders, 21 files, 44.76 KB, 44.76 KB in total.)

    ConfirmationDialog.class 2.31 KB

    DetailInfoUI.class 2.46 KB

    Dialog.class 2.31 KB

    DialogListener.class 196 bytes

    IndexFunctionUI$ListIndex.class 658 bytes

    IndexFunctionUI.class 1.65 KB

    ListMerchantGroupUI.class 3.22 KB

    ListPhoneUI.class 2.62 KB

    LoginUI.class 2.53 KB

    

    MerchantGroupDetailInfoUI.class 1.97 KB

    NewPhoneUI.class 3.69 KB

    SearchPhoneUI.class 2.33 KB

    Title.class 1.69 KB

    UIController$1.class 1.68 KB

    UIController$EventID.class 1.39 KB

    UIController.class 8.14 KB

    WaitCanvas$1.class 816 bytes

    WaitCanvas.class 2.27 KB

    WelcomeUI.class 1.49 KB

    

    deployed

    (0 folders, 4 files, 40.16 KB, 40.16 KB in total.)

    

    PhoneBook.jad 285 bytes

    PhoneBook.jar 38.50 KB

    

    res

    (0 folders, 5 files, 12.54 KB, 12.54 KB in total.)

    icon.png 308 bytes

    logo.gif 4.15 KB

    

    welcome.png 6.70 KB

    

     src

    (1 folders, 2 files, 1.38 KB, 83.40 KB in total.)

    

    

     com

    (1 folders, 2 files, 1.38 KB, 82.02 KB in total.)

    

    

     north

    (1 folders, 2 files, 1.38 KB, 80.63 KB in total.)

    

    

     phonebook

    (2 folders, 3 files, 3.29 KB, 79.25 KB in total.)

    

    PhoneBookMIDlet.java 1.90 KB

    

    model

    (0 folders, 9 files, 27.05 KB, 27.05 KB in total.)

    Account.java 3.80 KB

    ApplicationException.java 1.29 KB

    Index.java 2.28 KB

    logo.gif 4.15 KB

    

    Model.java 10.22 KB

    Preference.java 965 bytes

    UserModel.java 2.99 KB

    

     ui

    (0 folders, 17 files, 48.92 KB, 48.92 KB in total.)

    ConfirmationDialog.java 1.85 KB

    DetailInfoUI.java 2.30 KB

    Dialog.java 3.52 KB

    DialogListener.java 455 bytes

    IndexFunctionUI.java 2.57 KB

    ListMerchantGroupUI.java 3.74 KB

    ListPhoneUI.java 3.10 KB

    LoginUI.java 2.47 KB

    

    MerchantGroupDetailInfoUI.java 1.77 KB

    NewPhoneUI.java 4.33 KB

    SearchPhoneUI.java 2.31 KB

    Title.java 1.86 KB

    UIController.java 12.62 KB

    WaitCanvas.java 2.41 KB

    WelcomeUI.java 2.22 KB

    展开全文
  • 手机通讯录源码

    2014-06-13 10:23:14
    有需要的自行下载 很实用 看看也不错
  • 精品文档可编辑 值得下载 Android手机通讯录的设计与分析 摘要本文采用谷歌公司新推出的一款基于Linux平台的开源手机操作系统Android系统利用Java语言Eclipse为开发工具对通讯录的代码进行编写通过对Android平台的...
  • Android手机通讯录解析

    2019-10-04 20:46:19
    相关图片上传麻烦,原文件到我的博客上传的文件里下载。 1、通讯录应用介绍 通讯录应用是Android自带的应用程序,我们看到此应用的时候,可能只认为这是一个应用,用数据库存储数据,但是实际上不是这样的。 ...

    相关图片上传麻烦,原文件到我的博客上传的文件里下载。

     

    1、通讯录应用介绍

    通讯录应用是Android自带的应用程序,我们看到此应用的时候,可能只认为这是一个应用,用数据库存储数据,但是实际上不是这样的。
    通讯录是ContentProvider的应用,通讯录由两部分组成:
    (1)com.android.providers.contacts的ContentProvider:真正存储数据的ContentProvider
    (2)com.android.contacts:运用ContentResolver获取数据的图形用户界面;

    2、通讯录数据库目录结构

    (1)、通讯录数据库目录结构的获取

    打开Eclipse软件,调出虚拟机。如果已经创建过虚拟机,则只需要运行程序,如下图

     

    如果没有创建就需要再去创建一个虚拟机。

    调出虚拟机效果如下:

     

    接下来就要:

     

     

     

    通讯录是存放在/data/data/com.android.providers.contacts/databases/contacts2.db里的

    接下来就是导出联系人的数据库:

     

    导出后得到这样的数据库:

     

     

    这个是QLite Database Browser 工具

    打开它把contacts2.db数据库拖进去就可以了。

    得到如下:

     

    查看数据库表中数据:

     

    到此如何获取手机数据到此结束,前期工作完成。

    3、通讯录数据库结构介绍

     

    这是手机通讯录直接相关联的几张表,圈出来的比较重要。

    (1)        mimetype表

     

    (2)        contacts表

     

    此处的name_raw_contact_id为raw_contacts表的主键

    (3)        raw_contacts表

     

    此处_id为raw_contacts表的主键,version翻译后叫版本号,一般一个联系人创建后版本号就从2开始,当这个联系人每做一次操作后version都增加,一般是增加1,但有时不确定反正他会增加。对于Android手机而言,它本身自带了一个通讯录,他对与联系人的删除操作就用户而言是删除了,因为在用户界面没有了该来联系人了。但是事实上Android并没有真正删除它。仅仅是在raw_contacts表中把deleted字段标记为了1,意思是说“1”代表删除了,“0”代表联系人没删除,是存在的。contact_id来自contacts表的主键。这样contacts和raw_contacts联系在一起了。

    (4)        data表

     

    data表中的mimetype_id来自mimetype表,raw_contact_id来自raw_contacts表。一般来说data1到data15的字段都是存放数据的。

    其中mimetype_id=5代表电话号码mimetype_id=7代表姓名。当mimetype_id=5时data1存放电话号码,data2存放电话号码的类型,data2=2,代表电话号码为手机号。

    2、3、手机通讯录的操作介绍

    (1)新增   这里介绍了两种方法

    /**

         * 将一组联系人添加到手机通讯录中

         *

         * @param Contacts

         * @param context

         */

        public static void AddContact(ContactInfo[] Contacts, Context context) {

     

            for (int i = 0; i < Contacts.length; i++) {

                ContentValues values = new ContentValues();

                // 下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactId

                Uri rawContactUri = context.getContentResolver().insert(

                        RawContacts.CONTENT_URI, values);

                long rawContactId = ContentUris.parseId(rawContactUri);

                // 向data表插入姓名数据

                if (Contacts[i].Name != "") {

                    values.clear();

                    values.put(Data.RAW_CONTACT_ID, rawContactId);

                    values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);

                    values.put(StructuredName.GIVEN_NAME, Contacts[i].Name);

                    context.getContentResolver().insert(

                            ContactsContract.Data.CONTENT_URI, values);

                }

     

                // 向data表插入电话数据

                if (Contacts[i].Num != "") {

                    values.clear();

                    values.put(Data.RAW_CONTACT_ID, rawContactId);

                    values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);

                    values.put(Phone.NUMBER, Contacts[i].Num);

                    values.put(Phone.TYPE, Phone.TYPE_MOBILE);

                    context.getContentResolver().insert(

                            ContactsContract.Data.CONTENT_URI, values);

                }

            }

        }

     

        /**

         * 将单个联系人添加到通讯录中

         *

         * @param Contact

         * @param context

         */

        public static void AddContact(ContactInfo Contact, Context context) {

     

            ContentValues values = new ContentValues();

            // 下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactId

            Uri rawContactUri = context.getContentResolver().insert(

                    RawContacts.CONTENT_URI, values);

            long rawContactId = ContentUris.parseId(rawContactUri);

       

            // 向data表插入姓名数据

            if (Contact.Name != "") {

                values.clear();

                values.put(Data.RAW_CONTACT_ID, rawContactId);

                values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);

                values.put(StructuredName.GIVEN_NAME, Contact.Name);

                context.getContentResolver().insert(

                        ContactsContract.Data.CONTENT_URI, values);

            }

           

            // 向data表插入电话数据

            if (Contact.Num != "") {

                values.clear();

                values.put(Data.RAW_CONTACT_ID, rawContactId);

                values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);

                values.put(Phone.NUMBER, Contact.Num);

                values.put(Phone.TYPE, Phone.TYPE_MOBILE);

                context.getContentResolver().insert(

                        ContactsContract.Data.CONTENT_URI, values);

            }

     

        }

       

           public static void testAddContacts(ContactInfo[] Contacts, Context context){

               for (int i = 0; i < Contacts.length; i++) {

                //插入raw_contacts表,并获取_id属性

                Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); //获取操作的表的路径

                ContentResolver resolver = context.getContentResolver(); //类似.NET中的上下文对象或数据库操作

                ContentValues values = new ContentValues(); //定义一个联系人操作变量

                long contact_id = ContentUris.parseId(resolver.insert(uri, values));

                //插入data表

               

                uri = Uri.parse("content://com.android.contacts/data");

                //add Name

                values.put("raw_contact_id", contact_id);

                values.put(Data.MIMETYPE,"vnd.android.cursor.item/name");

                values.put("data2", Contacts[i].Name);

                values.put("data1", Contacts[i].Name);

                resolver.insert(uri, values);

                values.clear();

                //add Phone

                values.put("raw_contact_id", contact_id);

                values.put(Data.MIMETYPE,"vnd.android.cursor.item/phone_v2");

                values.put("data2", "2");   //手机

                values.put("data1", Contacts[i].Num);

                resolver.insert(uri, values);

                values.clear();

               }

         

            }

       

           public static void testAddContacts(ContactInfo Contact, Context context){

                //插入raw_contacts表,并获取_id属性

                Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");

                ContentResolver resolver = context.getContentResolver();

                ContentValues values = new ContentValues();

                long contact_id = ContentUris.parseId(resolver.insert(uri, values));

                //插入data表

               

                uri = Uri.parse("content://com.android.contacts/data");

                //add Name

                values.put("raw_contact_id", contact_id);

                values.put(Data.MIMETYPE,"vnd.android.cursor.item/name");

                values.put("data2", Contact.Name);

                values.put("data1", Contact.Name);

                resolver.insert(uri, values);

                values.clear();

                //add Phone

                values.put("raw_contact_id", contact_id);

                values.put(Data.MIMETYPE,"vnd.android.cursor.item/phone_v2");

                values.put("data2", "2");   //手机

                values.put("data1", Contact.Num);

                resolver.insert(uri, values);

                values.clear();

             /**   //add email

                values.put("raw_contact_id", contact_id);

                values.put(Data.MIMETYPE,"vnd.android.cursor.item/email_v2");

                values.put("data2", "2");   //单位

                values.put("data1", "www.2cto.com");

                resolver.insert(uri, values); */

            }

    (2)修改  此处也介绍两种方法针对ID的来源

    /**

         * 更新联系人

         *

         * @param context

         *            上下文对象

         * @param name

         *            联系人姓名

         * @param number

         *            手机号

         * @param ContactId

         *            ID(此ID是由通讯录数据库自动生成的,并且该ID为contacts表中的主键)

         */

           public static void testUpdate(Context context, String name,

                    String number, String ContactId){

               String version="0";

               String rawContactsId ="";

               ContentResolver cr = context.getContentResolver();

               //依contacts表中的主键查找raw_contacts表中的ID即主键

               Cursor rawContactsIdCur = cr.query(RawContacts.CONTENT_URI,

                        null, RawContacts.CONTACT_ID + " = ?",

                        new String[] { ContactId }, null);

              

               if (rawContactsIdCur.moveToFirst()) {

                   version = rawContactsIdCur.getString(rawContactsIdCur

                            .getColumnIndex(RawContacts.VERSION));

                   //获得raw_contacts表中的主键

                   rawContactsId = rawContactsIdCur.getString(rawContactsIdCur

                            .getColumnIndex(RawContacts._ID));

                  

               }

             

               ContentResolver resolver = context.getContentResolver();

               ContentValues values = new ContentValues();

              

               Uri uri = Uri.parse("content://com.android.contacts/data");//对data表的所有数据操作

                resolver = context.getContentResolver();

                values.clear();

                values = new ContentValues();

                values.put("data1", number);

                //依raw_contacts表中的ID对data表做相应的修改

                resolver.update(uri, values, "mimetype=? and raw_contact_id=?", new String[]{"vnd.android.cursor.item/phone_v2",rawContactsId}) ;

                values.clear();

                values.put("data2", name);

                values.put("data1", name);

                resolver.update(uri, values, "mimetype=? and raw_contact_id=?", new String[]{"vnd.android.cursor.item/name",rawContactsId}) ;

            rawContactsIdCur.close();

          

           }

          

           /**

             * 更新联系人

             *

             * @param context

             *            上下文对象

             * @param name

             *            联系人姓名

             * @param number

             *            手机号

             * @param ContactId

             *            ID(此ID是由通讯录数据库自动生成的,并且该ID为raw_contacts表中的主键)

             */

        public static void updateContact(Context context, String name,

                String number, String ContactId)

     

        {

     

            ContentValues values = new ContentValues();

     

            // 更新姓名

            values.clear();

            values.put(StructuredName.GIVEN_NAME, name);

           

            context.getContentResolver().update(ContactsContract.Data.CONTENT_URI,

     

            values,

     

            Data.RAW_CONTACT_ID + "=? and " + Data.MIMETYPE + "=?",

     

            new String[] { ContactId, StructuredName.CONTENT_ITEM_TYPE });

     

            // 更新电话

     

            values.clear();

     

            values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, number);

           

            context.getContentResolver().update(ContactsContract.Data.CONTENT_URI,

     

            values,

     

            Data.RAW_CONTACT_ID + "=? and " + Data.MIMETYPE + "=?",

     

            new String[] { ContactId, Phone.CONTENT_ITEM_TYPE });

     

        }

    (3)删除

    这里是彻底删除,把data,contacts,raw_contacts 表中的数据以并删除,而Android自带的手机通讯录删除操作不是真正意义上的删除,仅仅是将raw_contacts表中的deleted字段改为了“1”。

          /**

                 * 删除联系人

                 *

                 * @param context

                 *            上下文对象

                 * @param ContactId

                 *            联系人ID

                 *            ID(此ID是请求数据传递过来的,并且该ID为raw_contacts表中的主键)

                 */

        public static void DeleteContact(Context context, String ContactId)

        {

              Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");

              ContentResolver resolver = context.getContentResolver();

              Cursor cursor = resolver.query(uri, new String[]{RawContacts._ID},"contact_id=?", new String[]{ContactId}, null);

              if(cursor.moveToFirst()){

                int id = cursor.getInt(0);

                //根据id删除data中的相应数据

                resolver.delete(uri, "_id=?", new String[]{id+""});

                uri = Uri.parse("content://com.android.contacts/data");

                resolver.delete(uri, "raw_contact_id=?", new String[]{id+""});

                }

        }

    (4)读取联系人

    /**

         * 获取联系人

         *

         * @return list数组,包含手机通讯录中的联系人

         */

        private List<Map<String, Object>> getContacts() {

     

            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

     

            // 获取用来操作数据的类的对象,对联系人的基本操作都是使用这个对象

            ContentResolver cr = getContentResolver();

            // 查询contacts表的所有记录

            Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,

                    null, null, null);

     

            String deleted = "1";

            String version = "0";

            // 如果记录不为空

            if (cur.getCount() > 0) {

                // 游标初始指向查询结果的第一条记录的上方,执行moveToNext函数会判断

                // 下一条记录是否存在,如果存在,指向下一条记录。否则,返回false。

                while (cur.moveToNext()) {

     

                    // 取得联系人的ID索引值

                    String contactId = cur.getString(cur

                            .getColumnIndex(ContactsContract.Contacts._ID));

                    if(contactId==null)

                    {

                        contactId="No Id";

                   

                    }

                    // 取得联系人的名字索引

                    int nameIndex = cur.getColumnIndex(PhoneLookup.DISPLAY_NAME);

                    String name = cur.getString(nameIndex);

                    if(name==null)

                    {

                        name="No name";

                    }

                    String rawContactsId = "";

                    String id = cur.getString(cur

                            .getColumnIndex(ContactsContract.Contacts._ID));

     

                    // str += "ID:" + id + "\n";二、对联系人的基本操作(4)

                    // 读取rawContactsId

                    Cursor rawContactsIdCur = cr.query(RawContacts.CONTENT_URI,

                            null, RawContacts.CONTACT_ID + " = ?",

                            new String[] { id }, null);

     

                    // 该查询结果一般只返回一条记录,所以我们直接让游标指向第一条记录

                    if (rawContactsIdCur.moveToFirst()) {

                        // 读取第一条记录的RawContacts._ID列的值

                        rawContactsId = rawContactsIdCur.getString(rawContactsIdCur

                                .getColumnIndex(RawContacts._ID));

                        deleted = rawContactsIdCur.getString(rawContactsIdCur

                                .getColumnIndex(RawContacts.DELETED));

                        version = rawContactsIdCur.getString(rawContactsIdCur

                                .getColumnIndex(RawContacts.VERSION));

                    }

                    rawContactsIdCur.close();

                    // 读取号码

                    Cursor PhoneCur = cr.query(

                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

                            null,

                            ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID

                                    + " =?", new String[] { rawContactsId }, null);

                    // 上面的ContactsContract.CommonDataKinds.Phone.CONTENT_URI

                    // 可以用下面的phoneUri代替

                    // Uri

                    // phoneUri=Uri.parse("content://com.android.contacts/data/phones");

                    // 二、对联系人的基本操作(6)

     

                    // 一个联系人可能有多个号码,需要遍历

                    if(!PhoneCur.moveToNext())

                    {

                        //获取电话号码为空的情况即游标未找到的情况

                        String  number="No number";

                        // // 获取号码类型

                        Map<String, Object> map = new HashMap<String, Object>();

                        map.put("phone", number + ",");

                        map.put("name", name + "|");

                        map.put("version", version + ",");

                        map.put("deleted", deleted + ",");

                        map.put("id", contactId + ",");

                        list.add(map);

                       

                    }

                    else

                    {

                        // 号获取码

                        String number = PhoneCur

                                .getString(PhoneCur

                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                   

                        // // 获取号码类型

                        Map<String, Object> map = new HashMap<String, Object>();

                        map.put("phone", number + ",");

                        map.put("name", name + "|");

                        map.put("version", version + ",");

                        map.put("deleted", deleted + ",");

                        map.put("id", contactId + ",");

                        list.add(map);

                    }

                    while (PhoneCur.moveToNext()) {

     

                        // 号获取码

                        String number = PhoneCur

                                .getString(PhoneCur

                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                        if(number==null)

                        {

                            number="No number";

                           

                        }

                        // // 获取号码类型

                        Map<String, Object> map = new HashMap<String, Object>();

                        map.put("phone", number + ",");

                        map.put("name", name + "|");

                        map.put("version", version + ",");

                        map.put("deleted", deleted + ",");

                        map.put("id", contactId + ",");

                        list.add(map);

                    }

                    PhoneCur.close();//关闭游标

                }

            }

            return list;

        }

    }

     

    转载于:https://www.cnblogs.com/pengJk/p/4638288.html

    展开全文
  • Android手机通讯录

    2017-11-07 23:51:00
    本项目主要对手机的联系人进行分组、添加、删除、修改等操作,并将数据存到数据库。可通过拍照或者从手机中选中已存在的图片,并进行裁剪作为联系人的头像。可对联系人打电话、发短信、发邮件等操作。 并且可以同步...

    本项目主要对手机的联系人进行分组、添加、删除、修改等操作,并将数据存到数据库。可通过拍照或者从手机中选中已存在的图片,并进行裁剪作为联系人的头像。可对联系人打电话、发短信、发邮件等操作。 并且可以同步本机联系人以及导入SIM卡的联系人信息。

     

    http://06peng.com/attachment.php?fid=3 http://06peng.com/attachment.php?fid=3 http://06peng.com/attachment.php?fid=3 http://06peng.com/attachment.php?fid=3

     

     

     附上源码:

    下载文件







         本文转自06peng 51CTO博客,原文链接:http://blog.51cto.com/06peng/962417,如需转载请自行联系原作者

    展开全文
  • 读取成功后,需要和手机通讯录一样,实现分组显示,即A显示一组,B显示为一组,可是我们拿到的通讯录数据并无相应的分组参考,只能我们自已处理,得到汉字的拼音后进行排序。 以下JS已经针对uniapp平台进行调整,...
  • 点击下载https://pan.baidu.com/s/1dGpAxc1 关注微信公众平台 IM社区 或扫描下二维码 回复 :东京食种 即可获取 更多精彩
  • 使用c++模拟手机通讯录软件 学生作业可以参考 分模块 有详细的注释 同时可以正确的运行 请下载
  • 自己用C++写的一个手机通讯录,大家可以下载,参考一下
  • 如果没有共同好友,或者将手机通讯录所有联系人丢失或误删,该怎么办呢?今天小编就教大家几种找回误删通讯录联系人的方法。方法一:如果之前有将联系人同步到QQ助手里,直接通过QQ同步助手找回。先下载QQ同步助手,...
  • 今天看到有个做销售的小哥在头条问问上提到如何将Excel表格中的顾客号码批量导入至手机通讯录中,无奈条友们的层次果然很低,没有几个说出所以然的,现在我就分享一种方法导入一下。首先打开QQ邮箱,点“通讯录”,...
  • 使用CursorLoader读取手机通讯录今天get到一个新技能,使用CursorLoader异步加载数据通讯录数据。实现功能:通过读取手机通讯录所有联系人的名字及联系号码,将数据通过CursorLoader异步加载到ListView上。 这是效果...
  • 博文实现的功能:从Android手机中得到通讯录联系人的数据,并且实现A-Z排序和搜索过滤 以下是在本人手机中调试的效果图
  • 下载后,绑定手机的号在线登录,同步联系人至云端,当通讯录丢失时,点击我的—时光机—恢复对应时间段的备份即可,同时还有自动备份功能,可以选择通讯录每天、7天、14天自动备份,简单粗暴,非常奏效哦!...
  • 今天写一篇帖子讲如何把大批量的号码导入华为手机 也就是安卓手机 在 日常工作和生活中常常有大批量的电话存在Excel表格里,如何...最后、第三步文件文件拷贝到手机通讯录 最后上软件: 软件下载链接:https://pa.
  • 现在在做一个手机通讯录云上传下载的功能,要能够实现联系人的备份及下载,现在的问题是我只想做增量的上传,那是否每次上传数据都需要去比对每个上传的字段是否相同,还有联系人的头像如何进行比对?如果想实现像QQ...
  • 有两种方式: 第一种,点击【下载客户端】下载手机客户端JAVA软件包,用数据线或蓝牙等将该软输送至手机上,进行安装,运行。 第二种,直接使用手机访问http://soosync.com/wap下载使用。 [3]设置手机客户端权限 ...
  • Android 手机通讯录的实现源码

    万次阅读 2015-09-17 15:23:10
    Android 手机通讯录的实现源码 效果图 源码下载地址:http://download.csdn.net/detail/pcaxb/9114685 核心代码: package com.duguang.baseanimation.ui.listivew.sortlistview; import android.content....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 499
精华内容 199
关键字:

下载手机通讯录