gpt4 book ai didi

android - 如何只允许 NFC 与运行相同应用程序/Activity 的设备进行交互

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:03 29 4
gpt4 key购买 nike

我有一个使用 NFC 的应用程序。我想将 NFC 交互限制在与我的应用程序处于同一 Activity 中的其他设备。

问题

目前,如果我使用的设备A 已打开 Chrome,而我的设备B 正在运行我的应用程序,那么 Chrome 仍会检测到我的应用程序发送的数据近场通信。

我怎么能说“如果你没有运行我的应用程序,那么你就不能与我进行 NFC 交互”?

@Override
public NdefMessage createNdefMessage(NfcEvent event)
{
String stringOut = getMacAddress(this);
byte[] bytesOut = stringOut.getBytes();

NdefRecord ndefRecordOut = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, "text/plain".getBytes(), new byte[] {}, bytesOut);

NdefMessage ndefMessageOut = new NdefMessage(ndefRecordOut);

return ndefMessageOut;
}

在上面的代码中,无论其他设备有什么 Activity ,我都会发送 NFC 消息。也许有等待回复的方法?

最佳答案

你不能。由读取器(标签)/接收器(点对点)端决定哪个应用程序处理 NFC 事件。在 Android 上,这是通过 Intent 过滤器、前台调度系统和阅读器模式 API 完成的。通过后两者,前台 Activity 可能总是请求优先于所有其他应用程序。您无法阻止这种情况发生。此外,Android (Android Beam) 上的点对点模式本质上只允许单向消息交换,因此您不会真正执行任何握手。

虽然不会直接阻止其他应用与您的应用通信,但还是有一些选择:

  1. 使用加密使您通过 NFC 发送的数据无法用于任何不知道解密 key 的接收应用。

  2. 一方面使用阅读器模式,另一方面使用 HCE。这样,您就可以执行一些握手、建立经过身份验证的 channel 等。通过在 HCE 端使用您自己的应用程序标识符,您可以降低其他应用程序尝试访问您的应用程序的可能性。

关于android - 如何只允许 NFC 与运行相同应用程序/Activity 的设备进行交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31910696/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com