Android中如何生成可触发创建新联系人的二维码?
生成可触发创建新联系人的二维码解决方案
嘿,你的二维码生成代码逻辑完全没问题!问题出在你要编码的content格式上——要让扫码工具识别为联系人信息并弹出你想要的创建界面,必须用vCard格式的字符串作为编码内容,这是业界通用的标准格式。
第一步:构造正确的vCard格式内容
vCard有固定的规范,我给你一个基础的示例,你可以根据需求扩展字段:
String content = "BEGIN:VCARD\n" + "VERSION:3.0\n" + "FN:张三\n" + // 联系人全名,必填项 "N:张;三;;;\n" + // 姓、名的结构化拆分,格式是「姓;名;;前缀;后缀」,空字段也要保留分号 "TEL;TYPE=CELL:13800138000\n" + // 手机号码,TYPE可以指定CELL(手机)、HOME(家庭电话)等 "EMAIL:zhangsan@example.com\n" + // 可选:邮箱地址 "ADR;TYPE=HOME:;;北京市朝阳区;;100020;中国\n" + // 可选:家庭地址 "END:VCARD";
常用字段说明:
FN:联系人的全名,这是必填项,没有的话扫码工具可能无法识别为联系人N:结构化的姓名拆分,必须按照「姓;名;;前缀;后缀」的格式写,哪怕后面的前缀、后缀为空,分号也不能省略TEL:电话号码,可以通过TYPE标记号码类型,比如WORK(工作电话)、FAX(传真)EMAIL:邮箱地址,同样可以加TYPE=WORK这类标记ADR:地址,格式是「;;街道;城市;邮编;国家」,空的部分用分号占位
第二步:把vCard内容接入你的现有代码
把上面构造好的content替换你代码里原来的content变量,剩下的二维码生成逻辑不用动。运行后生成的二维码,用手机扫码工具扫一下,就能弹出你展示的那种创建新联系人界面了。
完整的代码参考
我把整合后的代码放这里,你可以直接用:
QRCodeWriter writer = new QRCodeWriter(); try { // 构造符合vCard标准的联系人内容 String content = "BEGIN:VCARD\n" + "VERSION:3.0\n" + "FN:张三\n" + "N:张;三;;;\n" + "TEL;TYPE=CELL:13800138000\n" + "END:VCARD"; BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, 512, 512); int width = bitMatrix.getWidth(); int height = bitMatrix.getHeight(); Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { bmp.setPixel(x, y, bitMatrix.get(x, y) ? Color.BLACK : Color.WHITE); } } image.setImageBitmap(bmp); } catch (WriterException e) { e.printStackTrace(); }
小补充
不同的扫码工具对vCard的字段支持可能有点小差异,但FN、N、TEL这三个核心字段是一定要有的,保证能触发联系人创建界面。如果需要加更多信息(比如公司、职位),可以查vCard 3.0的规范来扩展字段。

内容的提问来源于stack exchange,提问作者Blas Piris
相关产品推荐
相关产品推荐

