為了給黑莓導入iPhone 的通信錄(contacts) , 只能利用黑莓的桌面管理器, 通過ipd 來維護.
但是發現 ABC Amber BlackBerry Converter 只能轉換而無法修改, IPDManager 只能維護鈴聲和音樂啥的:( 只能自己寫了個小程序
ipd 的格式可以在
http://na.blackberry.com/eng/developers/resources/journals/jan_2006/ipd_file_format.jsp 這里找到, 后面是代碼, 只是生成datablock 列表, 還需要額外拷貝. 操作時最好只同步通信錄.
下面是代碼
#!/usr/local/bin/python2.5
#-*- coding: gbk -*-
from struct import *
class BBFile:
def __init__(self):
pass
def _contactblock(self, name, phone, uid):
s = ''
# name
name = name.encode("utf-16be")
s += pack('<HB', len(name)+1, 0xa0)
s += pack('<B', 0x01) + name
# ff * 8
s += pack('<HB', 8, 0x54)
s += '\xff'*8
# uid
s += pack('<HBI', 4, 0x55, uid)
# phone
phone = phone.encode("gbk")
s += pack('<HB', len(phone)+1, 0x08)
s += phone + '\x00'
return s
def save(self, filename, us, dbID=0, dbVer=0):
hf = open(filename, "w+b")
rs, uid = 1, 363797835 # 初始值
for u in us:
s = self._contactblock(u[0], u[1], uid)
h = pack('<HIBHI', dbID, len(s)+7, dbVer, rs, uid)
hf.write(h + s)
uid += 8 #
rs += 1 #
hf.close()
if __name__=='__main__':
bb = BBFile()
us = [ (u'寶寶1', u'13888888888'),(u'寶寶2', u'13888888888'),(u'寶寶3', u'13888888888'), ]
bb.save("bb.ipd", us, 0, 0)
1. 保存成文件就可以直接運行了:)
2. 如果要真的生成可以導入bb 的文件的話, 要使用高級-> 只同步通訊錄, 然后將這個文件生成的內容放在導出文件的頭的后面, 還是有點麻煩.... 有空做個全自動的 呵呵
因為只是測試, 所以很多硬編碼了:)