能否通过pynfc库利用NFC在安卓设备上打开Telegram等即时通讯软件
问题解答
可以实现,你现有代码逻辑不需要做大幅改动,仅需要调整推送的NDEF URI记录内容即可。
安卓系统原生支持通过URI Scheme唤起对应注册了该协议的第三方应用,Telegram官方注册了tg://开头的自定义协议,你之前用于打开URL、发送短信的ndef.UriRecord本身就支持自定义协议的URI推送,完全可以复用现有逻辑。
具体实现方法
你只需要将原来推送的HTTP、SMS协议URI替换为Telegram对应的URI Scheme即可,常用的Telegram URI格式如下:
- 直接打开Telegram主界面:
tg:// - 打开指定用户的聊天窗口:
tg://user?id=用户数字ID - 加入指定群组:
tg://join?invite=群组邀请码 - 打开指定公开频道:
tg://resolve?domain=频道公开用户名
修改后的代码示例(仅调整原有代码中推送NDEF记录的部分即可):
clf = nfc.ContactlessFrontend('usb') def on_connect(llc): threading.Thread(target=llc.run).start() return False llc = clf.connect(llcp={'on-connect': on_connect}) snep = nfc.snep.SnepClient(llc) # 替换为Telegram对应的URI即可 snep.put_records([ndef.UriRecord("tg://")])
注意事项
- 目标安卓设备必须提前安装Telegram应用,否则系统无法解析
tg://协议,不会触发应用唤起 - 部分安卓定制系统默认禁止NFC触发第三方应用唤起,需要提前在系统「设置-NFC」选项中开启对应权限
- 该逻辑同样适用于其他支持自定义URI Scheme的即时通讯应用,仅需要替换为对应应用的协议头即可
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

