您的位置:首页 > 移动开发 > Android开发

本地编写 android通讯录 同步联系人不用 gmail 豌豆荚 91助手啦

2011-04-23 08:55 323 查看
android手机,触屏的居多,掉电也很快,新买的手机 编辑联系人数目多了也真累,还难得那么频繁的充电

使用 通讯录自带的“导出联系人“ --》 ”导出到SD卡“

我把导出来的 00001.vcf 文件搬到了 fedora系统环境下

用vim打开它,有发现,绝对有发现:

它的内容如下:

BEGIN:VCARD -------> 这一行是标准格式 起始处
VERSION:2.1 -------->版本号 如果把gmail的联系人导出到本地,这里版本号是 3.1
EMAIL;PREF:csdn****@126.com -------->前面的 EMAIL;PREF: 是固定格式
END:VCARD -------->标志一个联系人项目的结束
BEGIN:VCARD
VERSION:2.1
N:我;;;; --------> 联系人的不同 ”我“ 字发生改变
FN: ----------> first name
TEL;CELL:1-595-&&&-&&&& -------> TEL;CELL: 是固定格式,gmail上导出来的略有不同

END:VCARD
BEGIN:VCARD
VERSION:2.1
N:爸;;;;
FN:
TEL;CELL:1-&&&-&&&-&&&&
END:VCARD

既然格式这么固定,那自然可以进行 ”格式化“ 输入,因此,我写了个 c 语言程序,实验一下:

#include <stdio.h>
int main( int argc, char **argv){

//char qname[10];
char name[30];
char num[20];
int exe = 1;

FILE *fp;

if( ( fp = fopen("0000.vcf","w") ) == NULL ){
printf( "open file failure !/n" );
exit( 0 );
}
printf("please input like: lqx李奇兴 1820101&&&&/n");
printf("input ( # # ) to quit/n");
fscanf(stdin,"%s%s",&name,&num);
if ( name[0] != '#' ){
exe = 1;
}else exe = 0;

// printf("%d/n",exe);

while ( exe ){
fputs( "BEGIN:VCARD/nVERSION:2.1/nN:" , fp );
fputs( name , fp );
fputs( ";;;;/n", fp );
fputs( "FN:" , fp );
// fputs(name,fp);
fputs( "/nTEL;CELL:" , fp );
fputs( num , fp );
fputs( "/nEND:VCARD/n" , fp );
fscanf( stdin , "%s%s", &name , &num );
if( name[0] != '#' ){

exe = 1;
}else

exe = 0;
}
fclose( fp );
return 0;
}

我把它编译指定输出为 : android_pb

然后 我直接 gedit一个文本,这里我名其为 in.txt

内容格式如下:

李奇兴lqx 1820101&&&& ------>习惯了名字后面加英文,便于查找(用惯了黑莓,呵呵)

csdn博客 1820101&&&&

# # ----->标志结束

在终端输入:

./android_pb < in.txt

执行完以后,在当前目录下生成了一个 0000.vcf文件,导入android手机测试,成功!!!

在这里,我实现的只是" 姓名 电话 "的输入格式,邮箱地址等我就没试了

另外,代码里面有个 qname 被注释掉了,因为之前打算是:

BEGIN:VCARD
VERSION:2.1
N:我;;;; --------> 这里汉字
FN: ----------> 这里英文
TEL;CELL:1-595-&&&-&&&& -----------> TEL;CELL: 是固定格式

但是生成的vcf导入手机以后,英文出来了,汉字不见了,额,没多想,直接用”姓名 电话“来输入了,有兴趣的朋友可以试一下

之所以这么整,是因为 在gmail上建联系人在导入手机,不仅需要上网同步,而且这个创建过程一只在点击鼠标,不爽

创建 vcf在本地直接导入多好,建一个 txt文本总比 繁琐点击鼠标强吧,呵呵

我是在fedora下试的,没在win下编写,之前想编写一个,然后生成一个 通用版的exe供网友方便使用,由于重装了win7.vc环境没了,懒得装了,反正是在linux下学习c的,故这一步工作没有做了,一字一字先敲这么些,哪位朋友要是做了一个,发我一个喽

邮箱 liqix326@gmail.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: