ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

android – 如何仅允许与运行相同应用程序/活动的设备进行NFC交互

2019-07-06 18:23:58  阅读:183  来源: 互联网

标签:android android-5-0-lollipop nfc android-beam nfc-p2p


我有一个使用NFC的应用程序.我想将NFC交互限制在与我的应用程序相同活动的其他设备上.

问题

目前,如果我使用的设备A已打开Chrome且设备B正在运行我的应用程序,则Chrome仍会检测我的应用通过NFC发送的数据.

我怎么能说“如果你没有运行我的应用程序那么你就不能与我进行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;
}

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

解决方法:

你不能.读取器(标签)/接收器(对等)侧确定哪个应用程序处理NFC事件.在Android上,这是由intent过滤器,前台调度系统和reader-mode API完成的.通过后两者,前台活动可以始终请求优先于所有其他应用程序.你无法阻止这一切.此外,Android(Android Beam)上的点对点模式本质上只允许单向消息交换,因此您不会真正执行任何握手.

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

>使用加密来呈现您通过NFC发送的数据不适用于任何不知道解密密钥的接收应用.
>在另一侧的HCE一侧使用读卡器模式.这样,您可以执行一些握手,建立经过身份验证的通道等.通过使用您自己的HCE端应用程序标识符,您可以降低其他应用程序甚至尝试访问您的应用程序的可能性.

标签:android,android-5-0-lollipop,nfc,android-beam,nfc-p2p
来源: https://codeday.me/bug/20190706/1399365.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有