适用于多种 NFC 类型的 Android Intent 过滤器

标签 android nfc intentfilter ndef

有人能解释为多种类型的 NDEF 记录设置 Intent 过滤器的语法吗?我有一个 Android 应用程序正在使用“外部”类型记录将二进制数据写入 NFC 标签,但随后该标签连接到主机,该主机以“文本/纯文本”的 mimeType 响应。

我希望能够从 Android 手机读取和写入这两种类型。

如果我只为一种类型设置了 Intent 过滤器并且标签数据对应,我可以读取其中一种(文本/纯文本或 ext),但我不知道如何修改 list 以使应用程序将为这些类型中的任何一种打开。

谢谢。

<activity
    android:name="com.example.mYapp.MainActivity"
    android:label="@string/app_name" 
    android:screenOrientation="portrait"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <!-- <data android:mimeType="text/plain" /> -->
        <data android:pathPrefix="/prefix:r" android:host="ext" android:scheme="vnd.android.nfc" />
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

最佳答案

当你想匹配或者一个URI(这是外部类型名称在 Intent 中传递的方式)或者一个MIME类型(text/plain),你需要为它们声明两个单独的 Intent 过滤器。否则,Android 的意向过滤器匹配逻辑只会尝试匹配同时包含 URI 和 MIME 类型的意向。

<activity ...>
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:pathPrefix="/prefix:r" android:host="ext" android:scheme="vnd.android.nfc" />
    </intent-filter>
    <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>

关于适用于多种 NFC 类型的 Android Intent 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26769810/

相关文章:

android - findViewById ClassCastExcpetion

android - NFC 插件在 Eclipse 中不起作用

android - 相机 Intent 过滤器

android - 使用 Espresso on Emulator 在 Android Studio 中测试互联网连接错误处理

java - 不同类中的不同 HTTP POST 使用相同的方法?

android - 现代 Gradle Android 项目中 "sonar.libraries"的正确配置

android - 使用 Android 读取 NXP ICODE SLI-L 标签

java - 在 Android 中发现标签时如何识别 mifare classic 和 mifare ultralight

Android Intent 过滤器不起作用

Android:Intent-Filter 是如何工作的?