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

    2014-08-22 09:50:29
    实现了增删改查,把联系人上传服务器及下载联系人 ,能够正常运行。
  • 遍历从webservice,服务器上面的json文件中数据 ---解析json字符串---: -(void)parseJsonKit:(NSString *)jsonString ... NSArray *array=[jsonStringobjectFromJSONString];... NSLog(@"yunPanCounts=%d",...

    遍历从webservice,服务器上面的json文件中数据

    ---解析json字符串---:


    -(void)parseJsonKit:(NSString *)jsonString

    {

        NSArray *array=[jsonStringobjectFromJSONString];

        

       NSLog(@"yunPanCounts=%d",[arraycount]);

       //云端联系人的数量

        self.yunpanCounts.text =[NSStringstringWithFormat:@"%u",[arraycount]];


        for (int i =0; i< array.count; i++) {

            

            NSDictionary* temp = [arrayobjectAtIndex:i];

            

            NSString *firtname = [tempobjectForKey:@"firstname"];

            NSString *lastname = [tempobjectForKey:@"lastname"];

            NSString *middleName = [tempobjectForKey:@"middleName"];

            NSString *prefix = [tempobjectForKey:@"prefix"];

            NSString *suffix = [tempobjectForKey:@"suffix"];

            NSString *firstnamePhonetic  = [tempobjectForKey:@"firstnamePhonetic"];

            NSString *lastnamePhonetic = [tempobjectForKey:@"lastnamePhonetic"];

           

            NSString *organization = [tempobjectForKey:@"organization"];

            NSString *jobtitle = [tempobjectForKey:@"jobtitle"];

            NSString *department = [tempobjectForKey:@"department"];

            NSString *note = [tempobjectForKey:@"note"];

            NSString *birthday = [tempobjectForKey:@"birthday"];

            NSString *firstKnow = [tempobjectForKey:@"firstKnow"];

            NSString *lastKnow = [tempobjectForKey:@"lastKnow"];

            

            

           //add to contact

            ABAddressBookRef iphoneAddressBook =ABAddressBookCreate();

            ABRecordRef newPerson =ABPersonCreate();

            CFErrorRef error =NULL;

            

            ABRecordSetValue(newPerson,kABPersonFirstNameProperty,firtname, &error);

            ABRecordSetValue(newPerson,kABPersonLastNameProperty,lastname, &error);

            ABRecordSetValue(newPerson,kABPersonMiddleNameProperty, middleName, &error);

            ABRecordSetValue(newPerson,kABPersonPrefixProperty, prefix, &error);

            ABRecordSetValue(newPerson,kABPersonSuffixProperty, suffix, &error);

            ABRecordSetValue(newPerson,kABPersonFirstNamePhoneticProperty, firstnamePhonetic, &error);

            ABRecordSetValue(newPerson,kABPersonLastNamePhoneticProperty, lastnamePhonetic, &error);

            ABRecordSetValue(newPerson,kABPersonOrganizationProperty, organization, &error);

            ABRecordSetValue(newPerson,kABPersonJobTitleProperty, jobtitle, &error);

            ABRecordSetValue(newPerson,kABPersonDepartmentProperty, department, &error);

            ABRecordSetValue(newPerson,kABPersonNoteProperty, note, &error);

            ABRecordSetValue(newPerson,kABPersonBirthdayProperty, birthday, &error);

            

            

            ABRecordSetValue(newPerson,kABPersonCreationDateProperty, firstKnow, &error);

            ABRecordSetValue(newPerson,kABPersonModificationDateProperty, lastKnow, &error);

            

    ///特别值的注意的是多值字段的遍历///

           //用于存放具有多个值的项

           ABMutableMultiValueRef multi =ABMultiValueCreateMutable(kABMultiStringPropertyType);

            //得到多值字段[电话号码]的集合      

            NSMutableDictionary *phoneDict = [tempobjectForKey:@"phone"];

            NSLog(@"%@",phoneDict);


            for (id keyin phoneDict) 

            {

                if ([keyisEqualToString:@"home"]) {

                     ABMultiValueAddValueAndLabel(multi, [phoneDict objectForKey:key], kABPersonHomePageLabel,NULL);

                }

                if ([keyisEqualToString:@"main"]) {

                    ABMultiValueAddValueAndLabel(multi, [phoneDict objectForKey:key], kABPersonPhoneMainLabel,NULL);

                }

                if ([keyisEqualToString:@"work fax"]) {

                    ABMultiValueAddValueAndLabel(multi, [phoneDict objectForKey:key], kABPersonPhoneWorkFAXLabel,NULL);

                }

                //other

                

                if ([keyisEqualToString:@"mobile"]) {

                    

                    ABMultiValueAddValueAndLabel(multi, [phoneDict objectForKey:key], kABPersonPhoneMobileLabel,NULL);

                }

                if ([keyisEqualToString:@"home fax"]) {

                    ABMultiValueAddValueAndLabel(multi, [phoneDict objectForKey:key], kABPersonPhoneHomeFAXLabel,NULL);

                }

                if ([keyisEqualToString:@"other fax"]) {

                    ABMultiValueAddValueAndLabel(multi, [phoneDict objectForKey:key], kABPersonPhoneOtherFAXLabel,NULL);

                }

                if ([keyisEqualToString:@"pager"]) {

                    ABMultiValueAddValueAndLabel(multi, [phoneDict objectForKey:key], kABPersonPhonePagerLabel,NULL);

                }

                if ([keyisEqualToString:@"iPhone"]) {

                    ABMultiValueAddValueAndLabel(multi, [phoneDict objectForKey:key], kABPersonPhoneIPhoneLabel,NULL);

                }

                

                ABRecordSetValue(newPerson,kABPersonPhoneProperty, multi, &error);

                

            }

            

           //清空该变量用于存放下一个多值的项

            multi = nil;

               

            ABAddressBookAddRecord(iphoneAddressBook, newPerson, &error);

            ABAddressBookSave(iphoneAddressBook, &error);

            

            if (error!=NULL) {

               NSLog(@"Danger will Robinson! Danger!!!");

            }

          

            

            CFRelease(newPerson);

            CFRelease(iphoneAddressBook);

            

            

        }

        

    }

    展开全文
  • 今天写一篇帖子讲如何把大批量的号码导入华为手机 也就是安卓手机 在 日常工作和生活中常常有大批量的电话存在Excel表格里,如何...最后、第三步文件文件拷贝到手机通讯录 最后上软件: 软件下载链接:https://pa.

    今天写一篇帖子讲如何把大批量的号码导入华为手机 也就是安卓手机

    在 日常工作和生活中常常有大批量的电话存在Excel表格里,如何把他们导入到华为手机或者安卓手机

    主要分三步:

    首先、第一步我们将表格整理成【姓名】和【电话】两 栏

    其次 、第二步将表格 转换成通讯录格式文件

    软件下载:https://pan.baidu.com/s/1WKJBdi31Pt30IA5cbL0jew 提取码:ylxq

    最后、第三步转换好的格式文件拷贝到手机通讯录

    最后上软件:

    软件下载链接:https://share.weiyun.com/JG6ZNAv7
    CSDN贵族下载地址:https://download.csdn.net/download/bbyn1314/11856129

    展开全文
  • 人人网好友里有个通讯录功能,在里面建立名片...工欲善其事必先利其器,这里推荐一个http抓包工具——HttpWatch(这是我个人做ajax开发的利器),大家可以在网上搜索然后下载到。安装后打开IE——工具——HttpWatch Pro

        人人网好友里有个通讯录功能,在里面建立名片后可以和好友交换联系方式。人人网上好友一般都是认识的同学,大多数人的联系方式都是比较真实。我们可以尝试批量把同学录中好友的email、手机号等常用联系方式获取下来,编辑成gmail、outlook等联系人格式。然后就可以批量导入手机中了,是不是很方便呢?好,下面我们就开始吧。

    • 工欲善其事必先利其器,这里推荐一个http抓包工具——HttpWatch(这是我个人做ajax开发的利器),大家可以在网上搜索然后下载到。安装后打开IE——工具——HttpWatch Professional(我装的是pro版)就可以启动HttpWatch
    • 点红色Record开始记录网页请求响应过程
    • 点击人人网导航好友——同学录

        通过查看HttpWatch记录我们发现一条请求的内容非常有用:http://www.renren.com/listcards,这条请求获取到了所有好友的名片情况,格式是JSON 。/(^o^)/, 暗喜,这种格式JS可以直接使用。

        但是里面包含的信息并不是我们想要的,因为电话中间打了****,估计这就是人人用来在点击时使用的数据。OK,我们随便找个好友点击一下看看吧,又有一个请求被我们注意到了,http://www.renren.com/showcard?friendID=xxxx就是它了,返回了id为xxxx好友的联系方式,也是JSON格式的。

        好了,接下来大家就编程循环更换id请求上面的地址,将结果保存成google或outlook联系人的文本格式就能导到手机或gmail里咯,我个人写个简陋的JS脚本一下就将200多个好友的电话更新到手机里了。

        其实我觉得在计算机世界里我们肯动手,写个脚本一跑,很多事就能够得到解决。我还曾经把人人网上所有同学的头像批量保存下来,然后对应保存到gmail上。用手机一同步,手机上联系人就显示同学的图片了,是不是也觉得很美妙呢?

    展开全文
  • 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

    展开全文
  • 《商会通讯录》《企业通讯录》是一款人人可加入的线上互联网通讯录,源码下载网址http://address-book.cn 该通讯录用户可直接通过手机或PC浏览器进行访问和查看!它具有简便易用、高效安全等特点,适合个人、团体、...
  • Android手机通讯录

    2017-11-07 23:51:00
    本项目主要对手机的联系人进行分组、添加、删除、修改等操作,并将数据存数据库。可通过拍照或者从手机中选中已存在的图片,并进行裁剪作为联系人的头像。可对联系人打电话、发短信、发邮件等操作。 并且可以同步...
  • 读取成功后,需要和手机通讯录一样,实现分组显示,即A显示一组,B显示为一组,可是我们拿通讯录数据并无相应的分组参考,只能我们自已处理,得到汉字的拼音后进行排序。 以下JS已经针对uniapp平台进行调整,...
  • 今天琢磨了很久这个问题,终于发现了一个方便巧妙的...iphone下载微信,登陆微信,下载通讯录。 此方法不好的结果就是你的通讯录资料会被腾讯拿=。=; 转载于:https://www.cnblogs.com/RheetZ/p/3351992.html...
  • ZZ:... 先说一下使用Google sync备份通讯录的好处:不需要下载软件,不需要数据线,Google现在是,以后也是最稳定,最安全的保存数据的服务商,Google s
  • 使用CursorLoader读取手机通讯录今天get到一个新技能,...因为模拟器上我只存了一个联系人,使用效果不明显,我将apk下载到手机上安装读取联系人完全没有问题,因为联系人关系到一些不可描述的小秘密,就不截图出来了
  • 第一步中已经获取了电子版的电话号码,这一步将电子版导入QQ同步助手中。   1、使用QQ号登陆网页版QQ同步助手,链接为:http://pim.qq.com/pim/login.jsp   2、登陆账号,找到右侧“更多操作”中的“导入...
  • android手机通讯录备份还原代码

    热门讨论 2011-11-01 09:02:10
    最近想写段android程序玩玩。...2.读取txt文件,导入到通讯录完成还原。 具体代码 1.添加 通讯录读写权限,存储卡写权限 <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> ...
  • 将纸质的电话号码导入到手机通讯录第一步自然是将纸质的变成电子版的,怎么实现呢?大家通常想到的就是用文字识别工具,如汉王、捷迅等,这些文字识别工具收费的识别度挺高,免费的就差劲了,基本上不能用。我试了...
  • 通讯录,下载即可运行

    2009-08-11 16:23:49
    还有嵌入式的手机号码归属地查询,可以快捷地查询此联系人手机的所在地。强大的导入导出功能可以快速的导入Excel文件及CSV文件,轻松完成信息的录入。本软件还有一项实用的功能就是图片链接及查看功能,使得记录...
  • 1:安装Nokia PC套件(非OVI,下载链接:http://nds1.nokia.com/files/support/global/phones/software/Nokia_PC_Suite_chi_sc_web.exe),将N900手机通讯录同步WINDOWS通讯簿中; 2:将WINDOWS通讯簿中的通讯...
  • 很好用的···自己努力打造的···只包含源代码··时候下载了安装VC才可以运行
  • GoToMyCloud主要功能有远程桌面,文件传输(文件、图片、视频上传下载通讯录导入导出),文件同步,远程开关机等功能。GoToMyCloud有PC版本,Android版和iOS版本,不仅可以让您从本地PC上操作远程PC,还可以从...
  • 本软件只提供给企业获取自己业务员手机里面的信息使用(有的公司业务员手机里面的信息需要汇总公司,使用这个软件就方便多了,一键获取,一键导出),或者自己测试研究使用! 分享此源码只为了大家学习、参考、...
  • 如果联系人很多,在手机上想维护联系人信息不太方便,可以使用这个工具,将这个工具安装 nokia 手机中,把联系人导出,通过pc端工具编辑完后,再导入更新。 在 e63 及 5230 上测试通过! 来两张截图 ...
  • 考虑时手机助手的问题,到腾讯官网下载qq同步助手,因为没有酷派的8279F1型号对应的版本,找个跟 8279F1 比较接近的型号,下载apk,安装到手机端。从qq界面的右下角,应用管理器里, 找到工具通讯录,点击进网页,...
  • 还原的时候只需通过FileConnection 读取备份的文件,还原到手机通讯录就ok了 主要代码如下 FileConnection fc; String s=""; try { String elem = null; Enumeration e = FileSystemRegistry.listRoots(); ...
  • 2.下载ITools,用它连接IPhone,导入IPhone; 说明一下,我开始用的是诺基亚1202,联系人都存在手机SIM卡上了,安卓手机只是一个用来导出VCF的工具; 转载于:https://www.cnblogs.com/igux...
  • 最近在做iOS系统通讯录备份到服务器,并且可以从服务器中下载备份文件恢复到手机的功能,部分实现细节记录如下。 将iphone系统通讯录生成.vcf文件 ABAddressBookRef addressBook = ABAddressBookCreate(); ...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 222
精华内容 88
关键字:

下载通讯录到手机