Android verwendet einen AID-basierten Routing-Mechanismus, um die Kommunikation im Kartenemulationsmodus an bestimmte Anwendungen (HCE-Anwendungen oder SE-Applets) zu senden. Dies ist auch das, was das NFC-Forum als primäres Mittel zur Unterstützung mehrerer unabhängiger Kartenemulationsanwendungen auf einem einzelnen NFC-Gerät konzipiert hat.
AID-based Routing erfordert den ersten Befehl ein SELECT (DF von Namen/AID) Befehl sein:
00 A4 0400 <Lc> <AID> [<Le>]
Dies ist erforderlich, um zwischen verschiedenen Anwendungen zu unterscheiden. Andernfalls wäre Android nicht in der Lage, die Kommunikation an den richtigen HCE-Dienst zu senden.
Dies verhindert jedoch auch die Emulation von allem, was einer erfolgreichen Anwendungsauswahl vorausgeht (z. B. Auswählen einer Masterdatei mit einem SELECT-Befehl (nach Dateiname usw.)). Wenn dies erlaubt wäre, hätte Android keine Möglichkeit zu wissen, welche HCE-Anwendung für die Handhabung dieses Befehls verantwortlich ist. Folglich wäre es unmöglich, mehrere HCE-Anwendungen zu hosten, die alle eine Master-Datei auf einem Gerät benötigen. Daher erwarte ich nicht, dass dies in absehbarer Zeit unterstützt wird.
Auf anderen Multi-Anwendungsplattformen existiert das gleiche Problem auch. Zum Beispiel haben typische Java-Card-Smartcards auch keine Master-Datei. Auf diesen Plattformen wird das Problem normalerweise dadurch überwunden, dass eine standardmäßig ausgewählte Anwendung zugelassen wird, die die gesamte Kommunikation vor dem ersten SELECT-Befehl (nach DF-Name/AID) verarbeitet. Man kann nur spekulieren, ob solch ein Mechanismus in einer zukünftigen Android-Version kommen würde ... Ich würde nicht darauf zählen.
Wenn gerootete Geräte eine Option sind, können Sie möglicherweise ein Framework wie Xposed verwenden, um den NFC-Systemdienst so anzupassen, dass die Kommunikation an einen Standard-HCE-Dienst gesendet wird.
Danke für Ihre Antwort. Aber die Verarbeitungslogik des POS ist sehr schwer zu ändern, der erste POS-Befehl lautet 00A40000023F00.So Android HCE diesen Befehl nicht an meine HCE-App weiterleitet –
Vielleicht können Sie Ihre App-ID auf 3F00 ändern (wenn natürlich erlaubt) –
SELECT AID Befehl ist 00A404XXXXXX SELECT MF-Befehl ist 00A40000023F00 So ändern App-ID zu 3F00 ist nicht funktionieren. –