NFC读取后打开应用:Android应用NFC触发启动实现咨询
嘿,我来帮你搞定NFC触发打开Android App的事儿!你已经用QR码+网页跳转的方式实现了App启动,那NFC的实现思路其实更直接——不需要中间网页过渡,只要让NFC标签存储你的深度链接,再给App配置好响应NFC触发的规则就行。下面是具体步骤:
一、选对NFC标签的数据格式
Android对NDEF(NFC Data Exchange Format)格式的标签支持最好,尤其是其中的URI记录类型,这是直接触发App深度链接的最优解,比绕网页跳转高效多了。
二、给NFC标签写入内容
你可以用现成的NFC工具App(比如NFC Tools)来快速写入,不用自己写代码:
- 打开NFC工具,选择「创建NDEF记录」
- 选择URI类型,输入你的深度链接:
myapp://params - 把NFC标签贴近手机背部的感应区,完成写入
如果之后需要自己写代码批量写入标签,核心代码大概是这样(Java示例):
// 创建URI类型的NDEF记录 NdefRecord uriRecord = NdefRecord.createUri("myapp://params"); // 组装成NDEF消息 NdefMessage ndefMessage = new NdefMessage(new NdefRecord[]{uriRecord}); // 后续就是连接NFC标签、写入消息的逻辑(需要处理NFC适配和权限)
三、给你的App配置NFC响应规则
这步是关键!要在AndroidManifest.xml里告诉系统:“我的App能处理这个NFC链接”。
- 先声明NFC权限和硬件支持(在Manifest根节点添加):
<uses-permission android:name="android.permission.NFC" /> <!-- 如果你的App不是必须依赖NFC,把required改成false --> <uses-feature android:name="android.hardware.nfc" android:required="true" />
- 在你要启动的Activity(比如主Activity)的标签里,添加响应NFC的intent-filter:
<intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" /> <category android:name="android.intent.category.DEFAULT" /> <!-- 指定你的深度链接scheme,和myapp://对应 --> <data android:scheme="myapp" /> </intent-filter>
敲黑板:NDEF_DISCOVERED是优先级最高的NFC触发动作,系统检测到标签里的URI是myapp://开头时,会直接唤起你的App,完全不需要网页跳转。
四、测试验证
- 打开手机的NFC功能
- 把写入好的NFC标签贴近手机背部感应区
- 系统会直接弹出你的App,或者让你选择启动的App(如果有多个App响应同个scheme),选你的App就搞定了!
备选方案:兼容非NDEF标签
如果遇到不支持NDEF格式的老标签,也可以退而求其次——在标签里写入你的网页链接http://myaddress.com/myapp/params(文本记录类型)。手机读取后会提示打开浏览器,然后通过你现有的网页refresh跳转打开App。不过这种方式多了一步浏览器跳转,体验不如直接用NDEF URI记录。
内容的提问来源于stack exchange,提问作者Teejay




