如何编写 Android 应用程序作为 NFC 处理程序?

问题描述 投票:0回答:1

我想编写一个 Android 应用程序,当检测到 NFC 标签时,该应用程序会自动打开或至少被列为处理程序。

我创建了一个示例应用程序,如https://www.youtube.com/watch?v=KyVihl6ACmQ中所述 但它不起作用(应用程序未打开)。

您可以在https://github.com/hobber89/androidNFCHandler

找到我的代码

如视频所示,我添加了 NFC 权限、NFC 功能和意图过滤器。 我做错了什么,缺少什么?

亲切的问候, 沃尔夫冈

android nfc
1个回答
0
投票

我明白为什么你的第一次尝试没有成功。

您的代码仅在清单中注册,当带有

Ndef
消息的标签时启动,您正在使用的标签是空白的,上面没有
Ndef
消息。

NXP Taginfo 的输出显示:-


-- NDEF ------------------------------

# No NDEF Data Storage Populated:

* TAG: Tech [android.nfc.tech.NfcV, android.nfc.tech.NdefFormatable]

因此,一旦格式化,标签就能够存储

Ndef
消息(格式化后,Tag Tech
android.nfc.tech.NdefFormatable
会更改为
android.nfc.tech.Ndef

最近更新后

现在您的技术列表正在寻找所有类型的标签,因此将与您用于测试的标签类型相匹配。

从表面上看,这应该可行,但我担心将其添加到清单 xml 的方式将无法正确解析。

我建议在 AndroidManifest.xml 文件中使用以下

Activity
条目

<activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.nfc.action.TECH_DISCOVERED"/>

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/nfc_tech_filter" />
        </activity>

这是更正常的样式,也是我在一个应用程序中使用的样式,用于在出现标签时启动我的应用程序。可能唯一的第一个

intent-filter
xml 标签是 process,将技术过滤器添加到
NDEF_DISCOVERED
TAG_DISCOVERED
没有效果。

© www.soinside.com 2019 - 2024. All rights reserved.