Ban*_*ane 2 android rfid nfc android-intent
我希望我的应用程序拦截手机发现的所有标签.这样我想检查标签的uid并在之后传递意图(显示应用程序选择器等).
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
Run Code Online (Sandbox Code Playgroud)
这就是我目前在清单中的内容,以及TAG_DISCOVERED的意图过滤器:
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.NfcB</tech>
<tech>android.nfc.tech.NfcF</tech>
<tech>android.nfc.tech.NfcV</tech>
<tech>android.nfc.tech.IsoDep</tech>
<tech>android.nfc.tech.MifareClassic</tech>
<tech>android.nfc.tech.Ultralight</tech>
<tech>android.nfc.tech.Ndef</tech>
<tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>
Run Code Online (Sandbox Code Playgroud)
当我扫描Mifare智能卡时,我的应用程序被调用,当我使用不同的标签与恩智浦ICODE IC时,标准的Android标签应用程序启动.
有关如何确保我能看到所有标签的任何提示?
首先,技术列表的工作方式是列出的所有技术都是AND,这意味着如果标签列出了所有不同的技术,意图就会传递给应用程序.我不知道有什么用.你想要做的更多是:
<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>
Run Code Online (Sandbox Code Playgroud)
等等.这会对您想要的不同标签进行OR运算.(NfcA或NfcB等)现在,这些技术中的一些像NfcA和Ultralight或Ndef一样.因此,如果您想要使用NfcA和Ndef卡,您可以使用
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.Ndef</tech>
</tech-list>
Run Code Online (Sandbox Code Playgroud)
现在,与标签上的技术最匹配的应用程序将启动,或显示在选择菜单中.但是NDEF_DISCOVERED优先于TECH_DISCOVERED.现在NDEF_DISCOVERED意图启动器可以非常具体地传递什么标签.虽然某些格式的NDEF(如Mime类型)允许"捕捉所有"过滤器(例如," / "为Mime),但有些则不允许.(比如uri格式化的Ndef Record).对于那些,如果有针对它的特定应用程序,除非您知道并构建它,否则您将无法保证您的应用程序将被启动.此外,我从来没有能够为Ndef标签(Mime OR URI,但不是两者)都有多个intent过滤器.但那可能是我没有努力尝试过.
如果另一个应用程序尝试执行相同操作(捕获尽可能多的标记),您将始终使用它进行调用.所以除非你手机上有唯一的应用程序,否则没有办法捕获每一个标签.但是,如上所示格式化您的技术列表代码将使您更加接近.
| 归档时间: |
|
| 查看次数: |
6155 次 |
| 最近记录: |