Keresés

Hirdetés

Új hozzászólás Aktív témák

  • k.kristof

    őstag

    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?

  • k.kristof

    őstag

    válasz lanszelot #3033 üzenetére

    Nem akarok gonosz lenni, de ha megfogadtad volna a fenti tanácsokat (Java alapok megismerése), akkor rájönnél magadtól is, hogy hülyeséget kérdezel. A Java nyelvben az integer típus 32 bites, 2^32-1 a maximális értéke, ami pont tízjegyű. Ha ennél több számjegyű értéket adsz meg, akkor értelemszerűen hiba történik, amit nem kezel a program ezek szerint.

    A long típus 64 bites, annak nagyobb az ábrázolható tartománya, aba írhatsz tíz jegyűnél több jegyű számot is.

    [ Szerkesztve ]

  • k.kristof

    őstag

    válasz lanszelot #3039 üzenetére

    INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.

    Ez nem okozna gondot, mivel az érték nagyságrendjétől függően választ tárolási méretet, ha jól értem, tehát ha kevés a 4 bájt, akkor 6 bájton fogja tárolni, amibe már belefér 11+ jegy. De ahogy thon73 is írta, nem ott van a hiba.

Új hozzászólás Aktív témák