精华内容
参与话题
问答
  • iOS 通讯录备份、恢复

    千次阅读 热门讨论 2016-01-11 11:32:00
    和相册 备份一样,公司产品备份功能有通讯录备份 功能,自然也有通讯录恢复了。iOS通讯录相关操作,iOS对通讯录的操作离不开的框架: #import #import iOS提供给我们了通讯录的相关信息,也给我们提供了简单的...

            和相册 备份一样,公司产品备份功能有通讯录备份 功能,自然也有通讯录恢复了。iOS通讯录相关操作,iOS对通讯录的操作离不开的框架:

    #import <AddressBook/AddressBook.h>
    #import <AddressBookUI/AddressBookUI.h>
            iOS提供给我们了通讯录的相关信息,也给我们提供了简单的通讯录的控制器、UI,但是可定制的部分较少,一般不用他的UI,我们就不多讲他提供的UI部分。(大概也就能改个颜色,组件 什么的,导航栏颜色等)。

            说道通讯录的使用,我们还是先来说权限的问题,iOS7之前这些是不需要申请用户权限的,但是iOS7之后,苹果开始注重用户的隐私。如:相册,通讯录,地理位置等信息都是需要得到用户的许可的。

            首先要申请用户权限。

    - (void)viewDidLoad {
        [super viewDidLoad];
        
        self.view.backgroundColor=[UIColor colorWithRed:248.0/255.0 green:248.0/255.0 blue:248.0/255.0 alpha:1.0];
        self.title=@"通讯录同步";
        [self initView];
        [self addRightBarItem];
        CFErrorRef error=NULL;
        //请求权限
        ABAddressBookRef addressBook=ABAddressBookCreateWithOptions(NULL, &error);
        ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
        });
        if (error==NULL) {
            CFRelease(addressBook);
        }
        
        
    }
    获得用户权限后,才能对AddressBook做相关操作。

    但是要注意的是,即使获得了权限,用户还可以在设置中把咱们的权限关掉。所以每次对AddressBook的操作前要检查下权限是否正常。

    //检测授权状态
    +(BOOL)checkAuthorizationStatus{
        if (ABAddressBookGetAuthorizationStatus()!=kABAuthorizationStatusAuthorized) {
            return NO;
        }else{
            return YES;
        }
    }
    

    接下来 获得所有的通讯录数据

    -(NSMutableArray *)getLocationAllPeople{
        [self.allPeople removeAllObjects];
        if (![JYAddressBookSyncManager checkAuthorizationStatus]) {
            return self.allPeople;
        }else{
            
            if (ABAddressBookGetAuthorizationStatus()!=kABAuthorizationStatusAuthorized) {
            }else{
            }
            CFErrorRef error = NULL;
            ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
            CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook);
            for (int i = 0; i<CFArrayGetCount(results); i++) {
                ABRecordRef person = CFArrayGetValueAtIndex(results, i);
                Person * people = [[Person alloc]init];
                people.id = ABRecordGetRecordID(person);
                people.first_name = CFBridgingRelease(ABRecordCopyValue(person, kABPersonFirstNameProperty));
                
                people.last_name = CFBridgingRelease(ABRecordCopyValue(person, kABPersonLastNameProperty));
                
                people.nick = CFBridgingRelease(ABRecordCopyValue(person, kABPersonNicknameProperty));
                
                people.desc = CFBridgingRelease(ABRecordCopyValue(person, kABPersonNoteProperty));
                
                people.org = CFBridgingRelease(ABRecordCopyValue(person, kABPersonOrganizationProperty));
                
                people.birth =CFBridgingRelease(ABRecordCopyValue(person, kABPersonBirthdayProperty));
                
                //取邮箱第一个。
                ABMultiValueRef emailsProperty=ABRecordCopyValue(person, kABPersonEmailProperty);
                
                NSArray *emailsArray=CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(emailsProperty));
                if(emailsArray.count>0){
                    NSString *email=[emailsArray objectAtIndex:0];
                    people.email = email;
                }
                CFRelease(emailsProperty);
                //取电话号码
                ABMultiValueRef phoneNumbersProperty = ABRecordCopyValue(person, kABPersonPhoneProperty);
                NSArray * phoneNumberArray = CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(phoneNumbersProperty));
                for (int j =  0; j<phoneNumberArray.count; j++) {
                    NSString *phoneNumber=[phoneNumberArray objectAtIndex:j];
                    //            NSString *phoneNumberLabel=CFBridgingRelease(ABMultiValueCopyLabelAtIndex(phoneNumbersProperty, j));
                    if(j == 0){
                        people.tel = phoneNumber;
                    }else if (j == 1){
                        people.mobile = phoneNumber;
                    }else if (j == 2){
                        people.home = phoneNumber;
                    }else if (j == 3){
                        people.office = phoneNumber;
                    }
                }
                CFRelease(phoneNumbersProperty);
                //获取地址
                //        ABMultiValueRef address = ABRecordCopyValue(person, kABPersonAddressProperty);
                //        int count = (int)ABMultiValueGetCount(address);
                //        if(count>0){
                //            people.addr = CFBridgingRelease(ABMultiValueCopyValueAtIndex(address, 0));
                //        }
                [self.allPeople addObject:people];
                CFRelease(person);
            }
            NSLog(@"本地读取数据:%@",self.allPeople);
            CFRelease(addressBook);
            
            return self.allPeople;
        }
        
    }

    由于我们公司的通讯录模块为初期版本,服务端设计的是通用模式(iOS Android通用),所以在号码读取和邮箱方面,做的差强人意,号码服务端限制死了四个号码字段,邮箱只有一个。值得一提的是,Addressbook给我们提供的是两个数组,一个是号码数组,一个是标签数组。但是都是c数组,我们要转换。我上面的代码没有要相关的标签,因为服务端规定死了四个。

    接下来就是恢复通讯录:(两种模式)

    1、删除本地所有,覆盖掉

    //恢复 (删除本机)
    -(void)resumeWithDeleteLocation:(AddressPeople*)people andComplete:(deleteSuccessBlock)block{
        if (![JYAddressBookSyncManager checkAuthorizationStatus]) {
            
        }else{
            [self getNetworkAllPeopleWithPeople:people andComplete:^(NSMutableArray *netData) {
                //获得所有用户
                CFErrorRef error = NULL;
                ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
                CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook);
                for (id peo in (__bridge NSArray *)results) {
                    ABRecordRef oldPeople = (__bridge ABRecordRef)(peo);
                    if (!oldPeople) {
                        break;
                    }
                    CFErrorRef error = NULL;
                    ABAddressBookRemoveRecord(addressBook, oldPeople, &error);
                    CFRelease(oldPeople);
                }
                ABAddressBookSave(addressBook, &error);
                CFRelease(addressBook);
                for (Person * person in netData) {
                    if(person.tel.length>0||person.mobile.length>0||person.office.length>0||person.home.length>0){
                        [self addLocalPersonWithNetPerson:person];
                    }
                }
                [SXLoadingView showAlertHUD:@"恢复成功" duration:0.5];
                block(people);
            }];
        }
        
    }
    
    
    逐条添加

    //
    -(void)addLocalPersonWithNetPerson:(Person *)per{
        ABAddressBookRef addressBook = ABAddressBookCreate();
        ABRecordRef person = ABPersonCreate();
        // 电话号码数组
        NSMutableArray * phones = [NSMutableArray array];
        NSMutableArray * labels = [NSMutableArray array];
        if(per.tel.length>0){
            [phones addObject:per.tel];
            [labels addObject:@"住宅"];
        }
        if(per.home.length>0){
            [phones addObject:per.home];
            [labels addObject:@"家庭"];
        }
        if(per.mobile.length>0){
            [phones addObject:per.mobile];
            [labels addObject:@"手机"];
        }
        if(per.office.length>0){
            [phones addObject:per.office];
            [labels addObject:@"工作"];
        }
        
        if(per.first_name.length>0||per.last_name.length>0){
            ABRecordSetValue(person, kABPersonFirstNameProperty, (__bridge CFStringRef)per.first_name, NULL);
            ABRecordSetValue(person, kABPersonLastNameProperty, (__bridge CFStringRef) per.last_name, NULL);
        }
        else{
            ABRecordSetValue(person, kABPersonFirstNameProperty, (__bridge CFTypeRef)(per.name), NULL);
        }
        // 设置birthday属性
        //ABRecordSetValue(person, kABPersonBirthdayProperty, (__bridge CFDateRef)per.birth, NULL);
        ABMultiValueRef mv = ABMultiValueCreateMutable(kABMultiStringPropertyType);
        // 添加电话号码与其对应的名称内容
        for (int i = 0; i < [phones count]; i ++) {
            ABMultiValueIdentifier mi = ABMultiValueAddValueAndLabel(mv, (__bridge CFStringRef)[phones objectAtIndex:i], (__bridge CFStringRef)[labels objectAtIndex:i], &mi);
        }
        
        ABRecordSetValue(person, kABPersonPhoneProperty, mv, NULL);
        if (mv) {
            CFRelease(mv);
        }
        ABAddressBookAddRecord(addressBook, person, NULL);
        ABAddressBookSave(addressBook, NULL);
        if (addressBook) {
            CFRelease(addressBook);
        }
    }
    

    第二种,合并联系人。由于json的代码结构不同,导致每个merge的比对算法不同。我们的比较死板。后期会改进。

    #pragma mark - 合并联系人
    -(void)mergeAddressBookWithLocalAndNet:(AddressPeople *)people andComplete:(mergeSeccessBlock)block{
        [self getNetworkAllPeopleWithPeople:people andComplete:^(NSMutableArray *netData) {
            NSMutableArray *localPersons = [self getLocationAllPeople];
            for (Person * person in netData) {
                BOOL isHave = NO;
                for (Person * localPerson in localPersons) {
                    isHave = [self isSamePeopleByPeople:person OtherPeople:localPerson];
                    if (isHave) {
                        break;
                    }
                }
                if(isHave){
                    [self updateLocalPersonWithNetPerson:person];
                }
                else{
                    [self addLocalPersonWithNetPerson:person];
                }
            }
            block();
        }];
    }
    
    
    -(BOOL)isSamePeopleByPeople:(Person*)person OtherPeople:(Person*)otherPerson{
        //安卓端只有name属性
        NSMutableArray * phoneNumArr = [NSMutableArray array];
        if(otherPerson.tel){
            [phoneNumArr addObject:otherPerson.tel];
        }
        if (otherPerson.home) {
            [phoneNumArr addObject:otherPerson.home];
        }
        if (otherPerson.office) {
            [phoneNumArr addObject:otherPerson.office];
        }
        if (otherPerson.mobile) {
            [phoneNumArr addObject:person.mobile];
        }
    //    NSLog(@"personName:%@  first:%@ last:%@ - otherPersonName:%@ %@",person.name,person.first_name,person.last_name, otherPerson.first_name,otherPerson.last_name);
        if(!IsNilString(person.name)){
            if ([person.name isEqualToString:otherPerson.first_name]||[person.name isEqualToString:[NSString stringWithFormat:@"%@ %@",otherPerson.first_name,otherPerson.last_name]]) {
                if ([phoneNumArr indexOfObject:person.tel] != NSNotFound) {
                    return YES;
                }
            }
        }
        else if ([person.first_name isEqualToString:otherPerson.first_name]&&([person.last_name isEqualToString:otherPerson.last_name]||IsNilString(person.last_name)==IsNilString(otherPerson.last_name))) {
            if ([phoneNumArr indexOfObject:person.tel] != NSNotFound) {
                return YES;
            }
        }
        return NO;
    }
    

    如果有相同联系人。那就upadte 如果没有就Add。

    -(void)updateLocalPersonWithNetPerson:(Person *)person{
        Person *peopleOfLocation;
        if (self.allPeople.count!=0) {
            for (Person * p in self.allPeople) {
                if (p.id==person.id) {
                    peopleOfLocation=p;
                    break;
                }
            }
            CFErrorRef error=NULL;
            ABAddressBookRef addressBook=ABAddressBookCreateWithOptions(NULL, &error);
            ABRecordRef person1=ABAddressBookGetPersonWithRecordID(addressBook, peopleOfLocation.id);
            //修改单值属性
            if (IsNilString(peopleOfLocation.nick)) {
                ABRecordSetValue(person1, kABPersonNicknameProperty, (__bridge CFTypeRef)person.nick, &error);
            }
            if (IsNilString(peopleOfLocation.desc)) {
                ABRecordSetValue(person1, kABPersonNoteProperty, (__bridge CFTypeRef)person.desc, &error);
            }
            if (IsNilString(peopleOfLocation.org)) {
                ABRecordSetValue(person1, kABPersonOrganizationProperty, (__bridge CFTypeRef)person.org, &error);
            }
            if (!peopleOfLocation.birth) {
                ABRecordSetValue(person1, kABPersonBirthdayProperty, (__bridge CFTypeRef)person.birth, &error);
            }
            //修改多值属性
            //电话号码
            ABMutableMultiValueRef multi=ABMultiValueCreateMutable(kABMultiStringPropertyType);
             NSArray * phoneNumberArray = CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(multi));
            if(person.home){
                if([phoneNumberArray indexOfObject:person.home] == NSNotFound){
                    ABMultiValueIdentifier mi = ABMultiValueAddValueAndLabel(multi, (__bridge CFStringRef)person.home, (__bridge CFStringRef)@"家庭", &mi);
                }
            }
            if(person.office){
                if([phoneNumberArray indexOfObject:person.office] == NSNotFound){
                    ABMultiValueIdentifier mi = ABMultiValueAddValueAndLabel(multi, (__bridge CFStringRef)person.office, (__bridge CFStringRef)@"工作", &mi);
                }
            }
            if (person.mobile) {
                if([phoneNumberArray indexOfObject:person.mobile] == NSNotFound){
                    ABMultiValueIdentifier mi = ABMultiValueAddValueAndLabel(multi, (__bridge CFStringRef)person.mobile, (__bridge CFStringRef)@"手机", &mi);
                }
            }
                
            ABRecordSetValue(person1, kABPersonPhoneProperty, multi, &error);
            CFRelease(multi);
            
            
            //添加记录到数据库
            ABAddressBookAddRecord(addressBook, person1, &error);
            //保存到数据库
            ABAddressBookSave(addressBook, &error);
            //        CFRelease(person);
            CFRelease(addressBook);
        }
    
    }
    

    大概就这些。一个AddressBookSyncManager就差不多了。


                                                                                                                     













    展开全文
  • 需求分析 在2年前就学过安卓开发,那时候安卓开发还是很火,但是感觉现在不怎么热潮了,这学期刚好有门c++课,实现通讯录备份,网络通信使用socket通信,服务器端用...
        

    640?wx_fmt=png

    需求分析

        在2年前就学过安卓开发,那时候安卓开发还是很火,但是感觉现在不怎么热潮了,这学期刚好有门c++课,实现通讯录备份,网络通信使用socket通信,服务器端用c++,客户端用c++,界面用 android编写。

    详细需求为:

        使用android开发一款手机通讯录APP,界面用java编写,需要实现将通讯录备份到TF卡及服务器,通信处使用C++实现。

    640?wx_fmt=png

    UML设计

    1.总体设计

    640?wx_fmt=png

    • android数据读取

    • 数据TF备份

    • 数据通过JNI传输

    • C++实现客户端编写接受jin传送数据及发送数据

    • C++实现服务器接受客户端及数据存储

    • 拨打电话功能

    2.数据协议传输

    640?wx_fmt=png

    客户端与服务器端协议传输!

    3.UML类图

    640?wx_fmt=png

    该项目总共4个类,具体类描述如上注释所示!

    4.UML时序图

    640?wx_fmt=png

    用时序图来描述项目的生存周期动态状态!

    640?wx_fmt=png

    运行展示

    1.备份远程

    640?wx_fmt=png

    左图是服务器,备份到远端sqlite数据库,右图是运行展示!

    2.备份本地

    640?wx_fmt=png

    备份到TF卡!

    640?wx_fmt=png

    核心代码

    1.通讯录获取

    640?wx_fmt=png

    使用ContentResolver来实现通讯录数据的获取!

    2.存储TF卡

    640?wx_fmt=png

    3.客户端

    640?wx_fmt=png

    客户端通过jni发送数据

    4.服务器端

    640?wx_fmt=png

    服务器端接收数据

    让我们打开手机,

    一起踏上手机通讯录备份吧!

    640?wx_fmt=png

    - - - End - - -


    640?wx_fmt=jpeg

    640?wx_fmt=gif

    640?wx_fmt=gif

    展开全文
  • package cn.m15.helper.logic; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import android.content.ContentResolver; import android.content.Context;
    package cn.m15.helper.logic;


    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;


    import android.content.ContentResolver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.res.AssetFileDescriptor;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Environment;
    import android.provider.ContactsContract;


    public class ContactsSyncer extends Syncer {


    public void backup(Context context) {
    ContentResolver cr = context.getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
    null, null, null);
    int index = cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY);
    FileOutputStream fout;
    try {
    fout = new FileOutputStream(
    Environment.getExternalStorageDirectory() + "/go.vcf");
    byte[] data = new byte[1024 * 1];
    while (cur.moveToNext()) {
    String lookupKey = cur.getString(index);
    Uri uri = Uri.withAppendedPath(
    ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);
    AssetFileDescriptor fd = context.getContentResolver()
    .openAssetFileDescriptor(uri, "r");
    FileInputStream fin = fd.createInputStream();
    int len = -1;
    while ((len = fin.read(data)) != -1) {
    fout.write(data, 0, len);
    }
    fin.close();
    }
    fout.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }


    public void restore(Context context, String filename) {
    Intent intent = new Intent();
    intent.setPackage("com.android.contacts");
    Uri uri = Uri.fromFile(new File(filename));
    intent.setAction(Intent.ACTION_VIEW);
    intent.setDataAndType(uri, "text/x-vcard");
    context.startActivity(intent);
    }
    }
    展开全文
  • iPhone通讯录导入及备份方法

    千次阅读 2016-02-23 17:58:51
    方法1:把原有手机卡(SIM)上的通讯录导入iphone     iPhone手机使用手册-“通讯录”操作说明   “通讯录”让您容易地使用 iPhone 给朋友和同事打电话、发送电子邮件和发短信。您可在 iPhone 上直接添加联系人,...

    现在大家经常更换手机,刚接触iphone的朋友可能会无从下手,下面介绍两种方法:

    方法1:把原有手机卡(SIM)上的通讯录导入iphone

     

     

    iPhone手机使用手册-“通讯录”操作说明

     


    通讯录”让您容易地使用 iPhone 给朋友和同事打电话、发送电子邮件和发短信。您可在 iPhone 上直接添加联系人,或通过ITUNES从电脑上同步通讯录。

    注:iPhone 不会在 SIM 卡上储存通讯录。

     

    一、打开通讯录

    您可直接从主屏幕打开“通讯录”,或在打电话时打开它。

     

    二、搜索联系人

    您可以在 iPhone 上搜索通讯录中的名字、姓氏和公司名称。

    操作步骤:在主屏幕上点“通讯录”图标(,暗黄色记录簿封面上有个小人),手指快速滑动到按任何通讯录列表顶部,在搜索栏中输入名字、姓氏或公司名称。

     

    三、管理 iPhone 上的联系人

    1 iPhone 上添加联系人

    方式一:直接添加联系人:在主屏幕按“通讯录”图标(,暗黄色记录簿封面上有个小人的图标),打开后轻按右上角的十字键“ ”。


    方式二:从另一部电话的 SIM 卡导入通讯录:在主屏幕上按“设置”图标( ,灰黑色类似齿轮的图标),轻按“邮件、通讯录、日历”,然后轻按“导入 SIM 通讯录”将SIM 卡上的联系人导入到 iPhone。

    注:如果同时启用了 MobileMe 和 Microsoft Exchange 的“通讯录”,则会要求您选取要在其中添加 SIM 通讯录的帐户。

     

    方式三:添加最近来电号码到通讯录(截图详见:最近来电添加通讯录):

    在主屏幕上按“电话”图标(,绿底上有个电话手柄的图标),轻按“最近呼叫”,轻按号码旁边的蓝底圆圈里有个向右的箭头按钮()。然后,轻按“创建新联系人”或“添加到现有联系人”并选取一个联系人。

     

    方式四:使用数字键盘添加联系人:

    在主屏幕上按“电话”图标(,绿底上有个电话手柄的图标),轻按“拨号键盘”,输入一个数字,轻按人的半身像左侧有个十号的图标()。轻按“创建新联系人”输入新联系人信息,或轻按“添加到现有联系人”选取一个已有联系人。

      

    2编辑联系人信息(截图详见:编辑联系人信息

    在主屏幕上轻按“通讯录”图标(,暗黄色记录簿封面上有个小人),选取“通讯录”中的一个联系人,轻按“编辑”。要添加一个项目时(如添加新地址、字段等),轻按添加项目左侧绿底圆圈内有个加号的图标()。要删除一个项目,轻按删除项目左侧红底圆圈内有个减号的图标()。

    联系人信息包含:名字、名字拼音或音标、姓氏、姓氏拼音或音标、公司、移动电话、住宅(电子邮件)、首页等。

     

    3使用联系人简介

    在联系人简介中,选择“移动号码”可呼叫对方、选择“住宅”可发送电子邮件、点击“短信”可发送短信等等。

    操作方式:在主屏幕上轻按“通讯录”图标(,暗黄色记录簿封面上有个小人),选取“通讯录”中的一个联系人,轻按其中项目。


    3联系人照片设置(设置后当此联系人电话呼入或呼出时除了会有联系人电话还会有联系人照片显示)(截图详见:照片指定给联系人

    1、轻按“通讯录”,选取一个联系人。

    2、轻按“编辑”和“添加照片”,或轻按现有照片。

    3、轻按 “拍照”以使用摄像头拍照。或者轻按“选取现有照片”并选取一张照片。

    4、拖移并缩放照片直到您满意。

    5、轻按“设定照片”。

     

    4删除联系人在“通讯录”中,选取一个联系人,然后轻按“编辑”。向下滚动并轻按“删除联系人”。


    5拨打分机号通讯录的存储方式(截图详见:手动拨打分机号

    编辑通讯录中电话号码信息时,点按左下角(+*#),则会弹出输入“暂停”和“等待”的选项。暂停即为(,)自动暂停3秒。等待即为(;)会手动等待客户发出按键指令,输入完毕后轻按“完成”。

     

    拨打分机号方式:

    方式一:自动拨打分机号:设置成功后,拨完主机号码自动拨打已设置的分机号码。

    步骤:使用拨号键盘轻按数字后,长按星号键(*)自动出现逗号[(,)每一个逗号的间隔时间约为3秒,可设置多个],依次输入需要拨打的号码,轻按“呼叫”。例如:拨号“10010,,1”则代表拨打10010电话接通后等待约6秒后自动按1。


    方式二:手动等待方式拨打分机号:(ios4.3新增)设置成功后,拨完主机号码会自动提示分机号码,需用户手动确认分机号码方可进入下一步操作。(截图详见:手动拨打分机号

    步骤:使用拨号键盘轻按数字后,长按(#)号键自动出现分号(;),依次输入需要拨打的号码,轻按“呼叫”。例如:拨号“10010;1”则代表拨打10010电话接通后手动按1。

     

    四、 备份通信录到网络地址(2012年更新,来自天极网)

     

      利用iTunes,可以将通讯录备份到Outlook、Yahoo。Gmail,Windows地址薄里。小编觉得备份到网络地址簿比较好,这样即使电脑无法使用建议备份到Yahoo 所以,在备份之前,您必须要有yahoo或gmail的帐号。

      1、iPhone连接上iTunes后,点击设备下的iPhone图标,找到下面通讯录,在同步通讯录前的复选框打上勾,后面选择要备份的地方(以Yahoo为例),选择后弹出下面的对话框。

    苹果应用教程:iPhone通讯录不得不说的秘密

      输入你的的帐号和密码,点确定,iTunes便会将通讯录备份到Yahoo的通讯录里。这时,你可以登陆到邮箱里,点通讯录,便会看到从iPhone备份出来的通讯录。

    苹果应用教程:iPhone通讯录不得不说的秘密

      2、恢复通讯录:当iPhone受到损坏,通讯录丢失时,可按上述方法从Yahoo里恢复通讯录即可。

     

     

    五、常见问题

    [存储数量]

    电话中的个人收藏能存储多少个联系人?

    答: 可以存储50个常用的联系人。

     

    [添加]

    通讯录中某个联系人能否添加联系人的其它信息?

    答:可以使用“添加字段”来自定通讯录。这样您可以指定要在联络人中提供的其他类信息。

     

    如何将原(或另一张)手机卡中的通讯录导入iPhone手机中?

    答:您可以将需要导入通讯录的手机卡插入Iphone中,在手机上轻按“设置”---“邮件、联系人、日历”---“导入 SIM 卡联系人”即可。

    如您导入的手机卡通讯录中与手机的通讯录中有姓名相同号码不同的情况时,导入后将会在手机通讯录中显示为XX姓名下面有二个不同的号码。

     

    如何从其他手机中导入通讯录?

    答:

    1、准备一台可访问互联网的电脑,并确保电脑连接互联网;

    2、在电脑上下载并安装iTunes软件,获取iTunes软件的地址为:http://www.apple.com.cn/itunes/download

    3、在电脑上下载并安装Microsoft Office软件。

    4、将其他手机中的联系人数据导入到Microsoft Outlook中(可通过同步软件将联系人导入,见图一)。不同的终端操作步骤不一样,但是道理基本相同,只是不同的手机需要下载不同的PC套件而已,如:

    诺基亚:诺基亚PC套件;多普达(Windows Mobile):Microsoft ActiveSync;多普达(Android):HTC Sycn。

    5、打开电脑端的iTunes软件,点击设备中的“XXX的设备”,并选择“信息”,在“同步通讯录”前打上勾并选择“Outlook”,点击“应用”即可(见图二)。


         

    如何将最近呼叫者的电话号码加入到通讯录?

    答: 请您点击“电话”选择“最近通话”,找到您希望添加的号码并点击号码旁边的按钮。之后点击“创建新联系人”进行添加。若您希望将此号码加入到已有联系人中,点击“添加到现有联系人”后进行编辑即可。

     

    [删除]

    我如何快速清空我的通讯录?

    答:手机上只能单个编辑删除。您可以连接电脑iTunes,将通讯录同步到windows联系人(仅针对windows系统)或outlook中,然后在电脑上进行选择性或全部删除。

     

    IPHONE手机卡上的通讯录怎么删除掉?直接从手机上怎么删除?

    答: IPHONE只能读取手机卡中的通讯录,但无法进行管理,因些无法删除手机卡上的通讯录。直接删除手机中通讯录的方法:进入通讯录-点需删除的人-点“编辑”-点击界面最下方“删除联系人”。

     

    [搜索、排序、同步]

    如何快速查找通讯录中的联系人?

    答: 请您点一下通讯录列表最上方的搜索框,输入名字、姓氏或公司名称即可(若要快速滚动至列表的上方,请点一下状态栏)

     

    为何我的通讯录中的联系人是以“名姓”来排序,如何更改?

    答: 您点击“设置”,再点击“邮件、通讯录、日历”,之后将“排列顺序”以及“显示顺序”更改为“姓,名”或“名,姓”即可。

     

    我的iphone连接电脑后,电脑上的通讯录会不会覆盖掉手机上的通讯录呀?

    答:1、只有在iTunes中设置了“自动同步通讯录、日历、电子邮件帐户和书签”,iphone连接电脑后才会自动进行同步操作;

    2、如果是首次同步通讯录,系统会提示选择“合并”或“替换”,“替换”是指用电脑中的通讯录替换iphone中的,“合并”是指电脑和iPhone任何一方(或双方)都做了些修改,那么同步会让双方保持一致,例如:电脑/iphone上删除了A,同步时iPhone/电脑中也会删除A;电脑/iphone上增加了A,同步时iPhone/电脑中也会增加A。在经历过一次同步操作后,以后的同步均是选择“合并”。

    方法2:通过OutLook导入

          一般用户手机里面的通讯录都比较多,一个一个地在手机上建立通讯录会非常麻烦,建议大家先到专卖手机的客服中心,通过程序把手机里面的通讯录导出来,因为导入通讯录需要手机的驱动盘、数据线等,所以到卖手机的客服部比较专业,而且快。

    导出手机:诺基亚手机,如果不是,只要制作成Outlook通讯录格式即可。详细查看Outlook使用说明。

          诺基亚客服中心导出的通讯录格式直接就是上Outlook联系人格式,直接连接上iPhone用iTunes同步到iPhone上面就可以了。

    步骤:打开iTunes软件———连接iPhone

    选择“信息”———在同步通讯录前打勾———下面有个子目录,下拉会显示有(WINDOWS联系人/Outlook/YAHOO……),选择Outlook———然后直接选择最下面的同步就可以了。

    同步完就OK啦,打开你的iPhone瞧瞧,联系人资料就全有了。

    摩托罗拉手机:摩托罗拉客服中心导出来的通讯录格式是Excel,这个格式不可以直接同步的i鄄Phone,需要通过Outlook来转换一下。

    步骤如下:打开Outlook———Outlook联系人

    打开“文件”———“导入和导出向导”

    选择“从另一程序或文件导入”———然后“下一步”

    电话本格式是Excel,选择“MicrosoftExcel”———“下一步”

    点击“浏览”———在电脑上找到Excel格式的电话本文件

    然后点“下一步”

    选择“联系人”———再点“下一步”

    然后程序会自动把所有的联系人资料导入到Outlook联系人里面,这样就可以通过iPhone和iTunes软件轻松把顾客所有的电话资料全部导入到iPhone里面了。其实其他一些智能手机的通讯录导入方法也类似。

     图文教程图

    1、点击Outlook Express顶头菜单栏上的“工具”选择“通讯簿”。

    苹果应用教程:iPhone通讯录不得不说的秘密

      2、打开通讯簿后,点击菜单栏目中的“文件”—“新建联系人”,在这里你可以输入联系人的各种信息,最后点击“确定”即可。

    苹果应用教程:iPhone通讯录不得不说的秘密

      3、将iPhone与电脑连接后,打开iTunes,选择iPhone点击“信息”,将“同步通讯录”前面打勾,最后选择同步即可将Outlook中输入好的通讯簿同步到iPhone里面。

    苹果应用教程:iPhone通讯录不得不说的秘密

     

    友情链接:七匹狼皮具

     

    展开全文
  • Android手机通讯录备份还原代码

    千次阅读 2012-06-29 10:58:28
    1.把通讯录中的联系人,电话号码保存到txt文件中完成备份。 2.读取txt文件,导入到通讯录完成还原。 具体代码 1.添加 通讯录读写权限,存储卡写权限 Android:name="android.permission.READ_CONTACTS"> ...
  • Android手机通讯录备份和恢复项目登录功能注册功能找回密码修改密码备份功能恢复功能恢复数据从服务器导出为Excel文件 登录功能 注册功能 找回密码 同注册功能 修改密码 同注册功能 备份功能 恢复功能 恢复数据...
  • android手机通讯录备份还原代码

    热门讨论 2011-11-01 09:02:10
    1.把通讯录中的联系人,电话号码保存到txt文件中完成备份。 2.读取txt文件,导入到通讯录完成还原。 具体代码 1.添加 通讯录读写权限,存储卡写权限 <uses-permission android:name="android.permission.READ_...
  • android手机通讯录备份还原 android手机通讯录备份还原 android手机通讯录备份还原
  • android通讯录备份与还原

    热门讨论 2011-07-08 18:19:52
    实现简单android通讯录备份与还原,网上这方面的资料很少,贴出来分享给有需要的朋友,支持2.0以上版本
  • android通讯录备份恢复 新增和修改 目前用的是新增,云端判断返回的手机号是否为空 /** * 向手机中录入联系人信息 * * @param contactListBean 要录入的联系人信息 */ public void addContacts...
  • 将要开发一款能本地备份 短信/彩信 通讯录的 程序, 备份后能列出备份的文件,然后把这些文件发送到自己的邮箱系统! 此文件将记录关键的开发过程与需求跟踪!
  • 自己弄的一个很简单的通讯录
  • Android备份短信和通讯录
  • 通讯录备份还原.rar
  • 本设计要求完成一个基于C/S模式的通讯录备份软件,采用C/S架构,具有易用、美观的图形界面。 1.1 服务器端功能要求 能够验证客户身份,接收客户端的备份通讯录的请求,能够实时备份和更新客户的通讯录 加密...
  • 通讯录备份还原二 package app.utils; import java.util.ArrayList; import java.util.List; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import ...
  • 通讯录备份之后,将备份文件copy至PC上,然后将文件后缀改为.rar格式,解压之后找到contacts文件(在根文件夹里边多找几层,或者直接搜索),contacts下边有很多.vcf格式的文件,便是你备份的通讯录了,可以使用文本...
  • 手机通讯录备份还原四___综合一 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import ...
  • 手机通讯录备份

    2012-11-17 14:49:27
    今天帮姑姑备份诺基亚手机通讯录到安卓手机,因为很少碰手机,竟然搞了一个小时。。。 最后方法如下: 1 用诺基亚pc套件把通讯录存为.csv格式。  2 把.csv格式的通讯录用QQ的通讯录功能导入,然后导出为vcard...
  • 7款同步备份手机通讯录工具

    千次阅读 2011-11-04 16:37:31
     QQ同步助手是腾讯推出的安全好用的手机同步工具,同时支持 iPhone,Android,Nokia 等众多手机。只需要下载一个软件就能方便的备份。当你换一个新手机的时候,在新手机上装一个 QQ 同步助手,就能下载原来
  • 几乎什么都可以备份,而且界面直观漂亮。 于是我打开看了看,果然上面写着地址本、日程、任务、短信、便签、彩信无一不能,而 MyTT 可取之处在于,如果手机上的数据被删除后,通过同步操作网站的数据也会被删除。但...
  • 一 需求分析本设计要求完成一个基于C/S模式的通讯录备份软件,采用C/S架构,具有易用、美观的图形界面。1.1 服务器端功能要求能够验证客户身份,接收客户端的备份通讯录的请求,能够实时备份和更新客户的通讯录加密...
  • 手机通讯录备份代码实现一和二的思路是通过 备份: while循环找到contact_id然后根据id找对应联系人所有电话和邮箱. 还原: 获取联系人列表通过for循环,一个一个插入手机通讯录 这两种方式的弊端是 备份速度太慢,查询...

空空如也

1 2 3 4 5 ... 20
收藏数 4,880
精华内容 1,952
关键字:

通讯录备份