1
每次用戶使用基於主機卡片仿真(HCE)開始NFC事務時,我都需要啓動我的應用程序。收聽HCE(基於主機的卡片仿真)事件
我不需要管理交互。我不需要來自閱讀器或NFC模擬器的任何類型的數據。我無法控制使用該服務的應用程序。我只需要知道手機是否靠近NFC閱讀器。
有沒有一種簡單的方法,如傾聽通用系統事件或通知而不干擾其他應用程序?
每次用戶使用基於主機卡片仿真(HCE)開始NFC事務時,我都需要啓動我的應用程序。收聽HCE(基於主機的卡片仿真)事件
我不需要管理交互。我不需要來自閱讀器或NFC模擬器的任何類型的數據。我無法控制使用該服務的應用程序。我只需要知道手機是否靠近NFC閱讀器。
有沒有一種簡單的方法,如傾聽通用系統事件或通知而不干擾其他應用程序?
不,Android不會發送任何類似「嘿,有一些應用剛剛通過HCE激活」的通知。因此,你無法在你的應用中獲得這樣的事件。具體而言,您不可能通過HCE激活您設備上的任何現有HCE應用程序(不受您的控制)。
您可以做的是創建您自己的HCE服務(註冊您的特定應用程序AID)。這個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 }
}
}
}