首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android NFC意图-所有类型的过滤器

Android NFC意图-所有类型的过滤器
EN

Stack Overflow用户
提问于 2015-03-03 17:18:54
回答 2查看 7.4K关注 0票数 1

我想创建一个Android应用程序来处理所有NFC事件,比如NDEF,为所有类别和所有数据类型发现的技术和标记。

这些意图过滤器在我的文件中:

代码语言:javascript
运行
复制
<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" />
    <action android:name="android.nfc.action.TECH_DISCOVERED" />
    <action android:name="android.nfc.action.TAG_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

当事件为TAG_DISCOVERED时,此代码可以工作。NDEF_DISCOVERED不打电话给我的应用程序。

有人能发现我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-05 07:47:35

你的意图过滤器

代码语言:javascript
运行
复制
<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <action android:name="android.nfc.action.TECH_DISCOVERED" />
    <action android:name="android.nfc.action.TAG_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

由于NFC的意图调度是如何工作的,所以没有多大意义(请参阅NFC标记是如何分配给应用程序的)

  1. TAG_DISCOVERED (在清单中使用时)只有在没有为与标记匹配的TECH_DISCOVEREDNDEF_DISCOVERED意图注册应用程序时才会被触发。因此,如果您还打算注册您的应用程序来处理所有TECH_DISCOVEREDNDEF_DISCOVERED意图,则通常不需要注册TAG_DISCOVERED
  2. NDEF_DISCOVERED意图筛选器需要(在许多平台版本/设备上,在某些平台上是可选的)一个您想要侦听的额外数据类型(请参阅)。NDEF_DISCOVERED意图过滤器是不存在的(尽管您可以通过使用TECH_DISCOVERED来实现Ndef和NdefFormatable技术)。NDEF_DISCOVERED只匹配最特定的意图筛选器。例如,如果您注册了以"http://"“开头的所有URL,任何注册以"http://www.example.com/”开头的URL的应用程序都将优先于您的应用程序。因此,为了获得优先于所有其他应用程序,您需要注册大量的数据类型。
  3. TECH_DISCOVERED意图筛选器需要对您想要侦听的标记技术进行额外定义(请参阅LaurentY回答)。 android.nfc.tech.IsoDep android.nfc.tech.MifareClassic android.nfc.tech.MifareUltralight android.nfc.tech.Ndef android.nfc.tech.NdefFormatable android.nfc.tech.NfcA android.nfc.tech.NfcB android.nfc.tech.NfcBarcode android.nfc.tech.NfcF android.nfc.tech.NfcV 在XML文件中指定它们。例如,要匹配所有NfcA和所有NfcB标记,您可以在一个名为xml/nfc_tech_filter.xml android.nfc.tech.NfcA android.nfc.tech.NfcB的文件中使用它 然后可以使用<meta-data>标记(在<activity>标记内,但在<intent-filter>标记之外)附加这个XML文件:
票数 6
EN

Stack Overflow用户

发布于 2015-03-04 10:00:34

您必须创建多个意图过滤器,如下所示:

代码语言:javascript
运行
复制
<intent-filter>
    <action android:name="android.nfc.action.NDEF_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/filter_nfc" />
<intent-filter>
    <action android:name="android.nfc.action.TAG_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

对于TECH_DISCOVERED,您必须创建一个XML资源文件,该文件指定您的活动在技术列表集中支持的技术,如下所示:http://developer.android.com/guide/topics/connectivity/nfc/nfc.html#tech-disc

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

https://stackoverflow.com/questions/28837963

复制
相关文章

相似问题

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