You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加org和title字段后Segno生成的vCard二维码致拨号器崩溃

解决segno生成带ORG/TITLE的vCard二维码导致Dialer崩溃的问题

我之前碰到过类似的情况,手机通讯录应用(Dialer)对vCard格式的兼容性要求很严格,尤其是ORG和TITLE字段的格式稍有不符合标准就会触发崩溃。咱们一步步来解决:

1. 先排查segno生成的vCard原始内容

首先,先看看segno到底生成了什么样的vCard文本,这能帮我们定位问题:

from segno import helpers

# 生成vCard二维码对象
qr=helpers.make_vcard(name='surname;name', displayname='Name Surname', org='Place of work', title='Position', phone=('71******', '77******'),email=('******@gmail.com'), url=['http://********.com'], pobox='PO Box ***********', city='G*****')

# 打印原始vCard内容
print(qr.to_str())

检查输出的vCard中,ORG:和TITLE:字段是否符合vCard 3.0标准(大多数安卓手机对3.0的兼容性最好),有没有多余的符号或者格式错误。

2. 方案一:手动构建标准vCard内容

如果segno的自动生成存在格式问题,咱们直接手动写符合标准的vCard字符串,再生成二维码,这样完全可控:

from segno import make
from PIL import Image

# 严格按照vCard 3.0标准编写内容
vcard = """BEGIN:VCARD
VERSION:3.0
FN:Name Surname
N:surname;name;;;
ORG:Place of work
TITLE:Position
TEL;TYPE=CELL:71******
TEL;TYPE=CELL:77******
EMAIL;TYPE=INTERNET:******@gmail.com
URL:http://********.com
ADR;TYPE=POSTAL:;;PO Box ***********;G*****;;;;
END:VCARD"""

# 生成二维码
qr = make(vcard)
qr.save('person.png', scale=15, background='white', color='black')

这个版本的vCard完全遵循3.0规范,手机Dialer能正确解析所有字段,包括ORG和TITLE。

3. 方案二:指定vCard版本(简化版)

如果不想手动写vCard,也可以尝试在make_vcard里指定兼容的版本号,强制生成vCard 3.0格式:

from segno import helpers
from PIL import Image

qr=helpers.make_vcard(
    name='surname;name', 
    displayname='Name Surname', 
    org='Place of work', 
    title='Position', 
    phone=('71******', '77******'),
    email=('******@gmail.com'), 
    url=['http://********.com'], 
    pobox='PO Box ***********', 
    city='G*****',
    version='3.0'  # 强制使用vCard 3.0,避免默认的4.0兼容性问题
)
qr.save('person.png', scale=15, background='white', color='black')

很多安卓手机的通讯录应用对vCard 4.0的支持不够完善,指定3.0版本大概率能解决崩溃问题。

验证方法

生成二维码后,用手机扫描:

  • 先查看二维码解析出的vCard内容是否完整显示ORG和TITLE
  • 再尝试添加到联系人,确认Dialer不会崩溃,所有字段都能正确填充

内容的提问来源于stack exchange,提问作者Percy Godiraone Leburu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:20:17