Sziasztok!
Van egy Android alkalmazásom, aminek fő funkciója QR kód olvasás, majd a beolvasott adattartalommal csinál ezt-azt. Az activitynek, ami a beolvasás előnézetét mutatja és a beolvasást végzi, van egy private metódusa, ami a sikeres olvasás esetén kezeli az adatot. Szeretném, ha NFC-vel is fogadni tudnám egy másik eszközről az adatokat, és átadni ennek a metódusnak, úgyhogy implementáltam a HostApduService-t a leírtak szerint, az activityben pedig az onCreate()-en belül elindítom:
Intent hceIntent = new Intent(getBaseContext(),MyHostApduService.class);
startService(hceIntent);
onResume()-on belül regisztrálok hozzá egy BroadcastReceivert:
registerReceiver(myReceiver,myFilter);
private BroadcastReceiver myReceiver =
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("ActScanner","Broadcast received from MyHostApduService");
Intent myIntent = getIntent();
String p_Result = myIntent.getStringExtra(MyHostApduService.EXTRA_MESSAGE);
if ((p_Result != null) && (0 < p_Result.length())) {
HandleQRResult(p_Result);
}
}
};
Így küldenék az activitynek üzenetet a kapott, APDU-ból kiszedett adatokkal:
Intent myIntent = new Intent(getBaseContext(),ActScanner.class);
byte[] rawdata = new byte[255];
System.arraycopy(apdu,5,rawdata,0,apdu.length - 5);
String message = new String(rawdata);
myIntent.putExtra(EXTRA_MESSAGE,message);
sendBroadcast(myIntent);
A bajom egyelőre az, hogy a másik eszköz azt kapja, hogy nincs ami kezelje az AID-ot, amit beállítottam az alkalmazásban, és amit biztos nem kezel semmi más a telefonon. Ha ezen túllépnék, akkor jól csináltam a fentit, tehát miközben fut az activity, tud NFC-n is adatot fogadni az alkalmazás, és megtörténhet a kívánt esemény?