每次用户使用基于主机的卡仿真(HCE)启动NFC事务时,我都需要启动我的应用程序。
我不需要管理互动。我不需要来自阅读器或NFC模拟器的任何数据。我无法控制使用该服务的应用程序。我只想知道手机是否接近NFC阅读器。
有没有一种简单的方法,比如监听一般的系统事件或通知而不干扰其他应用程序?
发布于 2016-04-13 10:12:23
不,Android不发送任何通知,比如“嘿,有些应用程序刚刚在HCE上被激活了”。因此,您不能在您的应用程序中获得这样的事件。具体来说,它不可能监控设备上现有的HCE应用程序(它不在你的控制下)是否已经通过HCE激活。
您可以做的是创建您自己的HCE服务(注册为您的特定应用程序AIDs)。然后,如果这个HCE服务接收到一个事务,它就可以启动一个活动(请参见How can I send message from HostApduService to an activity?):
public class MyHostApduService extends HostApduService {
@Override
public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
if ((apdu[1] == (byte)0xA4) && (apdu[2] == (byte)0x04)) {
// SELECT by AID
Intent intent = new Intent(this, MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return new byte[]{ (byte)0x90, (byte)0x00 }
} else {
return new byte[]{ (byte)0x6D, (byte)0x00 }
}
}
}https://stackoverflow.com/questions/36402419
复制相似问题