首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动平台 >

vcard解析与打包

2012-01-18 
vcard解析与打包求助?想实现以下功能:自己定义一个结构体:typedef struct{unsigned short szName[30]//姓

vcard解析与打包求助?
想实现以下功能:自己定义一个结构体:
typedef struct
{
unsigned short szName[30];//姓名
unsigned short szNickName[30];//昵称
unsigned short szMoB[40];//手机
unsigned short szMoB_HOME[40];//手机(家庭)
。。。。。。。。。//共20项
};
能把这个结构体打包成vcard,能从vcard中解出这个结构体//20项字段
vcard我没接触过,要求汉字是用UTF_8解析的,求c++/MFC代码,80718901@qq.com,万分感谢,270分全部送上,另开一帖在:
http://topic.csdn.net/u/20100717/16/79f5db5f-c873-4673-a85c-4cdd36c1eafc.html?seed=1303330889&r=67048502#r_67048502
另开一帖在http://topic.csdn.net/u/20100717/21/073314c6-0341-4a53-8c3e-7ba0f6138861.html
最简单的我也知道是自己一个一个按定义写结构体到vcard中,那么在取vcard流时,vcard流用unicode或多字节保存会有什么影响吗??

[解决办法]
有一段JAVA的 , 上上来LZ自己揣摩一下吧
package org.mobiledream.safebox.function.card;

import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Vector;

import javax.microedition.pim.Contact;
import javax.microedition.pim.ContactList;
import javax.microedition.pim.PIM;
import javax.microedition.pim.PIMException;
import javax.microedition.pim.PIMItem;
import javax.microedition.pim.PIMList;

import org.mobiledream.safebox.function.frame.ContactListener;
import org.mobiledream.safebox.function.frame.VCardListener;


/**
 * 对电子名片的所有操作
 * @author Mobile Dream
 *
 */
public class VCard extends Thread{

/**
* 监听器
*/
private ContactListener c = null;

/**
* 监听器
*/
private VCardListener v = null;

/**
* 联系人
*/
private Vector contacts = null;

/**
* 是否停止
*/
boolean stop = false;

/**
* 构造
*
*/
public VCard() {
contacts = new Vector();
}

/**
* 设置监听器
* @param c
*/
public void setContactListener(ContactListener c) {
this.c = c;
}

/**
* 移出监听器
*
*/
public void removeContactListener() {
c = null;
}

/**
* 取得监听器
* @return
*/
public VCardListener getVCardListener() {
return v;
}

/**
* 移除监听器
* @param v
*/
public void setVCardListener(VCardListener v) {
this.v = v;
}

/**
* 多线程
*/
public void run() {
if(c == null) {// 没有监听器
return;
}

try {

// 打开电话本并获得列表
PIMList pimlist = (PIMList) PIM.getInstance().openPIMList(
PIM.CONTACT_LIST, PIM.READ_ONLY);

Card.init(pimlist);// 初始化

// 对联系人表进行清空
contacts = new Vector();

int counter = 1;

Enumeration enu = pimlist.items();// 所有联系人

// 获得所有联系人
while (enu.hasMoreElements()) {
Card card = new Card((PIMItem) enu.nextElement());

contacts.addElement(card);// 装入向量保存

if(stop) {// 停止获取
contacts = null;
stop = false;
return;
}

c.contactAcquired(card, counter++);// 触发监听器
}

pimlist.close();
} catch (Exception e) {
contacts = null;
c.contactAcquireError(e);// 触发监听器
}

c.contactAcquireComplete(contacts);// 触发监听器
}

/**
* 将vcard串行化
* @param item
* @param ops
*/
public static void toSerialFormat(PIMItem item, ByteArrayOutputStream bops) {
try {
PIM.getInstance().toSerialFormat(item, bops, "UTF-8", "VCARD/2.1");
} catch (UnsupportedEncodingException e) {
// 不做处理
} catch (PIMException e) {
// 不做处理
}
}

/**
* 导入并提交修改
* @param items
* @throws PIMException


*/
public void commitPIMItem(byte[] byteData) {

if(v == null) {
return;
}

stop = false;

int restoreCounter = 0;

PIMList list = null;

try {
list = PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.WRITE_ONLY); // 打开电话本

Card.init(list);// 初始化

Vector card = Card.fromByteFormat(byteData); // 得到自定义名片

for (int i = 0; i < card.size(); i++) {
((ContactList)list).importContact(
(Contact)(((Card)card.elementAt(i)).toPIMItem(list))
).commit(); // 提交

v.commitPIMItemNumber(restoreCounter++);

if (stop) {
v.commitPIMItemSucceed(restoreCounter);// 触发监听器
stop = false;
return;
}
}
} catch (PIMException e) {
v.commitPIMItemFailed(e);
}

try {
list.close();
} catch (Exception e) {
}

v.commitPIMItemSucceed(restoreCounter);// 触发监听器
}

/**
* 停止获取
*
*/
public void cancelAcquire() {
stop = true;
}

/**
* 获取联系人
*
*/
public void acquireContacts() {
start();
}

/**
* 获取存储好的联系人
* @return
*/
public Vector getStoredContacts() {
return contacts;
}


/**
* 获得PIM版本号
* @return PIM版本号,null为不支持
*/
public static String getVersion() {
return System.getProperty("microedition.pim.version");
}
}

热点排行