2016-04-04 29 views
1

每次用戶使用基於主機卡片仿真(HCE)開始NFC事務時,我都需要啓動我的應用程序。收聽HCE(基於主機的卡片仿真)事件

我不需要管理交互。我不需要來自閱讀器或NFC模擬器的任何類型的數據。我無法控制使用該服務的應用程序。我只需要知道手機是否靠近NFC閱讀器。

有沒有一種簡單的方法,如傾聽通用系統事件或通知而不干擾其他應用程序?

回答

1

不,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 } 
     } 
    } 
}