首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >活动不是由NFC标记启动的。

活动不是由NFC标记启动的。
EN

Stack Overflow用户
提问于 2014-10-15 17:55:43
回答 1查看 1.5K关注 0票数 0

我已经在活动清单文件中声明了必需的意图筛选器。

场景1:当我用NFCDemo,安卓样例应用,->,->,广泛的nfc标签,->测试的时候,我的应用程序在选择对话框中被提示,就像其他nfc应用一样,NFC标签信息和NXP标签信息。

场景2:在刷过真正的NFC标签(卡) -> NFC TagInfo后,TagInfo应用程序会在chooser对话框中被提示,但我的应用程序没有。

我的要求->我的应用程序也应该显示像NFC标签信息应用程序。更多的信息->这是一张空卡!

代码语言:javascript
运行
复制
<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="*/*" />
</intent-filter>
<intent-filter>
    <action android:name="android.nfc.action.TAG_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
    <action android:name="android.nfc.action.TECH_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>    
<meta-data
    android:name="android.nfc.action.TECH_DISCOVERED"
    android:resource="@xml/supporting_nfc_techlist" />
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-16 07:14:38

只有当NDEF_DISCOVERED标记包含与筛选器匹配的NDEF消息时,才会触发NFC意图筛选器。您通常应该为特定的记录类型指定一个过滤器(例如,对于特定的MIME类型、特定的NFC外部类型名称或特定的URI(-prefix))。对"*/*“使用MIME类型筛选器将无法在某些设备上工作。

通常不应在应用程序清单中使用TAG_DISCOVERED意图筛选器。在目前的Android版本中,它主要用于前台调度系统,如果没有为任何标记发现事件注册其他活动,则作为退步。

TECH_DISCOVERED意图过滤器将过滤那些在supporting_nfc_techlist.xml文件中定义的标记技术。例如,如果要检测任何标记,可以使用如下过滤器:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
  <tech-list>
    <tech>android.nfc.tech.NfcA</tech>
  </tech-list>
  <tech-list>
    <tech>android.nfc.tech.NfcB</tech>
  </tech-list>
  <tech-list>
    <tech>android.nfc.tech.NfcF</tech>
  </tech-list>
  <tech-list>
    <tech>android.nfc.tech.NfcV</tech>
  </tech-list>
  <tech-list>
    <tech>android.nfc.tech.IsoDep</tech>
  </tech-list>
  <tech-list>
    <tech>android.nfc.tech.MifareClassic</tech>
  </tech-list>
  <tech-list>
    <tech>android.nfc.tech.MifareUltralight</tech>
  </tech-list>
  <tech-list>
    <tech>android.nfc.tech.NdefFormatable</tech>
  </tech-list>
  <tech-list>
    <tech>android.nfc.tech.Ndef</tech>
  </tech-list>
  <tech-list>
    <tech>android.nfc.tech.NfcBarcode</tech>
  </tech-list>
</resources>

请注意,Android文档中的示例具有误导性。技术列表与逻辑或合并,而技术条目在一个技术列表中与逻辑和.因此,

代码语言:javascript
运行
复制
<tech-list>
  <tech>android.nfc.tech.NfcA</tech>
</tech-list>
<tech-list>
  <tech>android.nfc.tech.NfcB</tech>
</tech-list>

表示NfcA NfcB,而

代码语言:javascript
运行
复制
<tech-list>
  <tech>android.nfc.tech.NfcA</tech>
  <tech>android.nfc.tech.NfcB</tech>
</tech-list>

意味着NfcA NfcB (不可能以NfcX (具有X= {A、B、F、V})的技术类型相互排斥)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26388986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档