当前位置: 首页 > 知识库问答 >
问题:

使用NDEF Android应用程序记录(AAR)获取NFC标签

禹昊穹
2023-03-14

我正在做一个NFC应用程序。为了启动我的应用程序,我使用了一个NDEF标签,里面有一条AAR NDEF记录。

这很好。但是现在我想直接用应用程序读取标签内容。我该怎么做?

(当我从手机上取下标签并再次触摸它时,它已经起作用了,但我想取消这一步。)

舱单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="nfctagscanner.mobileapps.lt.nfctagscanner" >
    <uses-feature android:name="android.hardware.nfc" android:required="true"/>
    <uses-permission android:name="android.permission.NFC" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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


            </intent-filter>


        </activity>
        <activity
            android:name=".NFCScanActivity"
            android:label="@string/app_name" >
            <intent-filter>

                <action android:name="android.nfc.action.NDEF_DISCOVERED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="nfctagscanner.mobileapps.lt.nfctagscanner" android:host="ext"
                    android:pathPrefix="/android.com:pkg" />
            </intent-filter>
        </activity>
    </application>

</manifest>

我只想让NDEF_发现我的意图。但我总是有行动。主要/类别。我的调试器的启动意图。

任何帮助都将不胜感激。我是基于这个做我的工作的: Android/NFC:在没有新意图的情况下获取标记

共有2个答案

姬承教
2023-03-14

我不知道这个答案是否正确,但我找到了一个解决方案:

        <activity
            android:name=".NFCScanActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />

                <category android:name="android.intent.category.DEFAULT" />

                <data android:mimeType="text/plain" />
            </intent-filter>
        </activity>
    </application>

</manifest>
萧晓博
2023-03-14

如果您希望应用程序由标签启动,并希望接收解析的NDEF消息,则标签应包含以下内容:

  1. 要作为NDEF消息的第一条记录进行过滤的NDEF记录(只能为NFC标记上的第一条NDEF记录创建意向过滤器)。给出您自己的答案,在您的情况下,这将是一个文本记录(或带有MIME类型Text/plain的MIME类型记录)。但是,您可能需要考虑使用NFC论坛外部类型记录,而不是使用自定义的应用程序特定类型名称(请参阅此处,因为这将允许您的应用程序更好地区分与其他应用程序使用的标签。文本记录仅在包含人类可读非解释文本时才使用。
  2. 如果你想确保只有你的应用程序是用标签启动的,并且如果用户没有安装应用程序,你的应用程序的Play Store页面会自动打开,那么你还应该使用Android应用程序记录(AAR)。此记录应该是NDEF消息中的最后一条记录。(请注意,无论在NDEF消息中的位置如何,AAR都将得到尊重,但将其用作第一条记录将导致您在问题中链接的帖子中描述的问题。)

一旦准备好包含适当NDEF消息的标记,就必须为应该接收标记发现事件和触发该事件的NDEF消息的活动创建适当的意图过滤器:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
</intent-filter>

或者,如果您使用自定义NFC论坛外部类型:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="vnd.android.nfc"
          android:host="ext"
          android:pathPrefix="/yourdomain.com:yourtypename"/>
</intent-filter>

如果您的应用程序没有与标签上NDEF消息的第一条记录相匹配的NDEF_发现的intent过滤器,并且您的标签包含Android应用程序记录,则清单中声明的第一个具有Android的intent过滤器的活动。意图行动主和Android。意图类别启动器将启动。因此,由于该活动未声明预期NFC意图,因此将通过android。意图行动MAIN(不包含NDEF消息/标记句柄)。

 类似资料:
  • 在ARR启动应用程序后,我阅读了意图,意图只有行动。主要的 我遵循下面的答案,但它不起作用。 nfc-tag-is-null-when-more-1-ndefreRecord 我在NFC标记的第一个位置写入mime类型数据,并在NFC标记的最后一个位置写入ARR packagename。 我还在清单文件中插入了意图过滤器

  • 我有一个小项目要将数据写入Ntag 213、215和216。 我成功地使用MifareUltraLight方法写入数据。问题是当我使用 NfcTools 扫描时,数据格式与我预期的不同。 这是我期望的格式。 这是我得到的格式。 我希望当Ntag扫描时,如果没有安装应用程序,它会打开浏览器。 我使用Mi的方法,因为N标签将受密码保护。我尝试了两种不同的方式来写入数据。 > 我使用命令N瘤手动处理写入

  • 问题内容: 在上一个有关Windows 7任务栏的问题之后,我想诊断为什么Windows不承认我的应用程序独立于。我目前有以下JNA代码来获取: 该应用程序的输出看似乱七八糟: 意识到输出可能是UTF-16的事实,在(3)中,我尝试从UTF-16转换字节数组。老实说,我不知道我的方法是否正确,因为(a)我不知道a的大小,(b)我不知道是否确实返回了字节数组或字符串。 我知道JSmooth将在模拟此

  • 我正在尝试从application.yml的XML导入目标配置中配置我的回退。 当我在XML中设置静态目标时,一切都很好,但如果不是,我在启动时会出现这个异常: 我的依赖关系: Spring启动:“1.5.4.发布” net.logstash.logback:logstash-logback-encoder:4.9 logback-spring.xml applicaiton.yml 我试图避免将

  • 大家好,我正在开发android应用程序,需要扫描设备的nfc标签。我对nfc一无所知,在阅读了大量教程后,我找到了一些方法来检查手机中是否启用了nfc,但我不知道如何读取nfc标签。 这是我的promise 我的帐篷

  • 我正在尝试做我原本以为会很简单的事情,但事实证明并不是。我有一个ACR122 NFC阅读器和一堆米特经典和米特超轻标签,我想做的就是从一个Java应用程序中读写一个mime类型和一个简短的文本字符串到每张卡片上。这是我到目前为止所做的工作: 我可以连接到我的阅读器并收听标签 我可以检测读卡器上的标签类型 在Mifare Classic标签上,我可以循环浏览标签上的所有数据(在从我的手机对标签进行编