【问题标题】:Android NFC tag received with broadcastreceiver使用广播接收器接收的 Android NFC 标签
【发布时间】:2011-01-31 16:52:30
【问题描述】:

我正在尝试在广播接收器中捕获 NFC 标签,因此我编写了一个简单的 BR,它在 onReceive() 中打印“asd”。在清单 xml 中它是这样描述的:

我只收到这个,根本没有打印出来....

01-31 16:37:18.980: ERROR/MediaPlayer(990): setAudioStream called in state 8
01-31 16:37:18.980: ERROR/MediaPlayer(990): error (-38, 0)
01-31 16:37:18.980: ERROR/MediaPlayer(990): start called in state 0
01-31 16:37:18.980: ERROR/MediaPlayer(990): error (-38, 0)
01-31 16:37:18.988: ERROR/MediaPlayer(990): Error (-38,0)

当我使用活动来处理这样的意图时:

<activity android:name="TagViewer"
            android:theme="@android:style/Theme.NoTitleBar">
            <intent-filter>
                <action android:name="android.nfc.action.TAG_DISCOVERED"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
</activity>

Activity 已启动并正常运行,那么如何使其与 BroadcastReceiver 一起使用?

【问题讨论】:

  • 我很抱歉评论 dint 接受了 manifest.xml 代码我不知道为什么这并不奇怪,我只是使用:action android:name="android.nfc.action.TAG_DISCOVERED" 和category android:name="android.intent.category.DEFAULT" 所以我认为 NFC 意图只是不想启动接收器,它只适用于活动,为什么?
  • 你能发布你的广播接收器代码吗?
  • 这是接收者声明,但它没有出现在主帖中,我不知道为什么?
  • 问题是android的NFCService调用startActivity()来获取标签意图,这就是为什么BR无法捕捉到它......

标签: android broadcastreceiver nfc


【解决方案1】:

你不能。正如您所指出的,NFC 适配器正在使用非常类似于 startActivity() 的东西来发送带有标签信息的意图。这与我们可以在 Android SDK 中执行的操作不同完全,因为 NFC 标签是特殊的。例如,除了 TAG_DISCOVERED 之外,您不能自己模拟 startActivity(),这是最后的动作,并不是非常有用。

我认为这是由于对 NFC 意图的特殊处理。当 NFC 硬件发现标签时,它会寻找可以处理标签的东西。前台活动首先尝试。如果可以的话,它接下来会尝试一个 NDEF_DISCOVERED 意图,并寻找一个活动来接受它。如果找不到,它会尝试使用 TECH_DISCOVERED 的意图。同样,如果找不到活动,它最终会尝试 TAG_DISCOVERED。如果它使用广播,它如何执行这种回退逻辑来继续尝试找到处理标签的东西?它如何知道标签意图是否有任何作用?它如何确保只有一件事会作用于标签?

【讨论】:

    【解决方案2】:

    您可以编写一个根本不显示任何 UI 的小 Activity,发送一条广播消息,然后以 finish() 结束。在清单中使用标志可以避免它出现在历史记录或最近发生的事件中并且不可见,希望通过广播接收器获得与您想要的类似的效果。

    【讨论】:

    • 仍然需要将两者都添加到清单中......(这是我试图避免的)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 2021-07-14
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多