X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=src%2Forg%2Faverage%2Fnfcauthcr%2FTagEvent.java;h=febfa63fc9914e14089915e06130c3ecba4881c3;hb=08b05b67a65e78e80fb0fffec8855a69a72ebff9;hp=7ef69433537bae7c64cd28196f5d2b4e0f54555b;hpb=9194bb54ed7bfd3ccb2ee93151fb3b1467cdae35;p=YkNeoCR.git
diff --git a/src/org/average/nfcauthcr/TagEvent.java b/src/org/average/nfcauthcr/TagEvent.java
index 7ef6943..febfa63 100644
--- a/src/org/average/nfcauthcr/TagEvent.java
+++ b/src/org/average/nfcauthcr/TagEvent.java
@@ -13,26 +13,35 @@ import android.nfc.tech.IsoDep;
import android.util.Log;
import android.widget.Toast;
-import org.average.nfcauthcr.YkNeo;
-import org.average.nfcauthcr.CRException;
+import org.average.nfcauthcr.NfcCRdispatch;
public class TagEvent extends Activity {
private final String TAG = getClass().getName();
- private PendingIntent tagIntent;
+ private NfcCRdispatch dispatch = new NfcCRdispatch((Activity)this);
@Override
protected void onResume() {
super.onResume();
Log.v(TAG, "Starting the work");
+ new AlertDialog.Builder(this)
+ .setTitle(R.string.challenging)
+ .setMessage(R.string.swipe)
+ .setOnCancelListener(
+ new DialogInterface.OnCancelListener() {
+ public void onCancel(DialogInterface dialog) {
+ Log.v(TAG, "Cancel");
+ finish();
+ }
+ })
+ .create().show();
+
Intent intent = getIntent();
setResult(RESULT_CANCELED);
- int slot = intent.getIntExtra("slot", -1);
- if (slot > 0) {
- enableDispatch(slot);
- }
+ byte[] challenge = intent.getByteArrayExtra("challenge");
+ dispatch.onResume(challenge);
}
@Override
@@ -40,83 +49,18 @@ public class TagEvent extends Activity {
super.onPause();
Log.v(TAG, "Finished the work");
- disableDispatch();
+ dispatch.onPause();
}
- public void onNewIntent(Intent intent) {
+ public void onNewIntent(Intent newintent) {
Log.v(TAG, "NFC Intent arrived");
- int slot = intent.getIntExtra("slot", -1);
- byte[] challenge = intent.getByteArrayExtra("challenge");
- if (slot <= 0) return;
- Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
- if (tag == null) return;
- IsoDep isoTag = IsoDep.get(tag);
- try {
- byte[] response = YkNeo.doChallengeYubiKey(
- isoTag, slot, challenge);
- Intent data = getIntent();
- data.putExtra("response", response);
- setResult(RESULT_OK, data);
- } catch (CRException e) {
- Log.v(TAG, e.getMessage());
- Toast.makeText(this, e.getMessage(),
- Toast.LENGTH_LONG).show();
- }
- finish();
- }
-
-/*
-
-
-
-
-
-
-
-
-
-
-
- android.nfc.tech.IsoDep
-
-
-*/
-
- private void enableDispatch(int slot) {
- Intent intent = getIntent();
- intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
- intent.putExtra("slot", slot);
- tagIntent = PendingIntent.getActivity(this, 0, intent, 0);
- IntentFilter iso =
- new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
- NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
- if (adapter == null) {
- Toast.makeText(this, R.string.no_nfc,
- Toast.LENGTH_LONG).show();
- finish();
- }
- if (! adapter.isEnabled()) {
- Toast.makeText(this, R.string.nfc_disabled,
- Toast.LENGTH_LONG).show();
+ byte[] response = dispatch.onNewIntent(newintent);
+ if (response != null) {
+ Intent masterintent = getIntent();
+ masterintent.putExtra("response", response);
+ setResult(RESULT_OK, masterintent);
finish();
}
- adapter.enableForegroundDispatch(
- this, tagIntent, new IntentFilter[] {iso},
- new String[][] {new String[] {IsoDep.class.getName()}});
- }
-
- private void disableDispatch() {
- if (tagIntent != null) {
- tagIntent.cancel();
- tagIntent = null;
- }
- NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
- if (adapter != null) {
- adapter.disableForegroundDispatch(this);
- }
}
}