Android NFC-点击发送标签或NDEF信息
是否可以在没有用户输入的情况下发送NDEF消息 我想在以下场景中使用NFC:用户在NFC阅读器上点击设备。NFC阅读器接收消息作为响应 基本上,我希望设备作为标签运行,即无需用户输入Android NFC-点击发送标签或NDEF信息,android,nfc,ndef,Android,Nfc,Ndef,是否可以在没有用户输入的情况下发送NDEF消息 我想在以下场景中使用NFC:用户在NFC阅读器上点击设备。NFC阅读器接收消息作为响应 基本上,我希望设备作为标签运行,即无需用户输入 我知道KitKat 4.4支持HCE(主机卡模拟),但我希望有一个具有更大设备支持的解决方案,如NDEF消息。当Android设备接收到一条NDEF消息(例如,通过读取NFC标签)时,它会通过调度机制对其进行处理,以确定要启动的活动 使用NdefMessage(byte[])从二进制数据构建NDEF消息,或使用Nd
我知道KitKat 4.4支持HCE(主机卡模拟),但我希望有一个具有更大设备支持的解决方案,如NDEF消息。当Android设备接收到一条NDEF消息(例如,通过读取NFC标签)时,它会通过调度机制对其进行处理,以确定要启动的活动 使用
NdefMessage(byte[])
从二进制数据构建NDEF消息,或使用NdefMessage(NdefRecord[])
从一个或多个NdefRecords构建
消息中第一条记录的类型对于消息分派具有特殊的重要性,因此请仔细设计此记录。
获取此NDEF消息中的NDEF记录。
NdefMessage总是有一个或多个NDEF记录:因此以下检索第一条记录的代码总是安全的(无需检查null或数组长度>=1):
返回:
一个或多个NDEF记录的数组。
在两台Android设备上使用Beam不可能采用一次点击的方式
(请注意,对于其他设备,尤其是一台是Android和一台
是一个专用的NFC阅读器或一个可以控制NFC的设备
低级别或模拟NFC标签的设备上的功能)
然而,两台Android设备之间可以采用两次点击的方式,只需对现有场景进行少量修改
您只需添加一个前台调度,该调度截获您传入的NDEF消息,从而阻止Android重新启动您的活动:
@Override
public void onResume() {
super.onResume();
NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
PendingIntent pi = PendingIntent.getActivity(
this,
0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
0);
adapter.enableForegroundDispatch(this, pi, null, null);
}
@Override
public void onResume() {
super.onResume();
NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
PendingIntent pi = PendingIntent.getActivity(
this,
0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
0);
adapter.enableForegroundDispatch(this, pi, null, null);
}