2016-04-04 13 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 } 
     } 
    } 
} 
関連する問題