From b14eb42b12ee674342f4eb4d764d681ebced636e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Sch=C3=A4ttgen?= Date: Tue, 16 Aug 2016 00:08:01 +0200 Subject: [PATCH] Scanner now passes result correctly to MainActivity --- .../main/java/me/impy/aegis/MainActivity.java | 28 ++++++++++++++++++- .../java/me/impy/aegis/ScannerActivity.java | 13 +++++++-- .../java/me/impy/aegis/crypto/KeyInfo.java | 4 ++- app/src/main/res/layout/activity_main.xml | 9 ++++++ 4 files changed, 49 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/me/impy/aegis/MainActivity.java b/app/src/main/java/me/impy/aegis/MainActivity.java index 0698fef5..b04e85fc 100644 --- a/app/src/main/java/me/impy/aegis/MainActivity.java +++ b/app/src/main/java/me/impy/aegis/MainActivity.java @@ -5,22 +5,48 @@ import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.Serializable; + +import me.impy.aegis.crypto.KeyInfo; +import me.impy.aegis.crypto.TOTP; public class MainActivity extends AppCompatActivity { + static final int GET_KEYINFO = 1; Button btnScan; + TextView tvTotp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnScan = (Button) findViewById(R.id.button); + tvTotp = (TextView) findViewById(R.id.textView2); btnScan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent scannerActivity = new Intent(getApplicationContext(), ScannerActivity.class); - startActivity(scannerActivity); + startActivityForResult(scannerActivity, GET_KEYINFO); } }); } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + // Check which request we're responding to + if (requestCode == GET_KEYINFO) { + // Make sure the request was successful + if (resultCode == RESULT_OK) { + KeyInfo info = (KeyInfo)data.getSerializableExtra("Keyinfo"); + + String nowTimeString = (Long.toHexString(System.currentTimeMillis() / 1000 / info.getPeriod())); + String totp = TOTP.generateTOTP(info.getSecret(), nowTimeString, info.getDigits(), info.getAlgo()); + + tvTotp.setText(totp); + } + } + } } diff --git a/app/src/main/java/me/impy/aegis/ScannerActivity.java b/app/src/main/java/me/impy/aegis/ScannerActivity.java index 3264f972..cbc8e7f3 100644 --- a/app/src/main/java/me/impy/aegis/ScannerActivity.java +++ b/app/src/main/java/me/impy/aegis/ScannerActivity.java @@ -2,6 +2,7 @@ package me.impy.aegis; import android.Manifest; import android.app.Activity; +import android.content.Intent; import android.content.pm.PackageManager; import android.support.v4.app.ActivityCompat; import android.support.v4.util.TimeUtils; @@ -13,6 +14,7 @@ import android.widget.Toast; import com.google.zxing.BarcodeFormat; import com.google.zxing.Result; +import java.io.Serializable; import java.sql.Time; import java.util.ArrayList; import java.util.List; @@ -53,14 +55,19 @@ public class ScannerActivity extends Activity implements ZXingScannerView.Result try { KeyInfo info = KeyInfo.FromURL(rawResult.getText()); - String nowTimeString = (Long.toHexString(System.currentTimeMillis() / 1000 / info.getPeriod())); - Toast.makeText(this, TOTP.generateTOTP(info.getSecret(), nowTimeString, info.getDigits(), info.getAlgo()), Toast.LENGTH_LONG).show(); + //String nowTimeString = (Long.toHexString(System.currentTimeMillis() / 1000 / info.getPeriod())); + //Toast.makeText(this, TOTP.generateTOTP(info.getSecret(), nowTimeString, info.getDigits(), info.getAlgo()), Toast.LENGTH_LONG).show(); + + Intent resultIntent = new Intent(); + resultIntent.putExtra("Keyinfo", info); + setResult(Activity.RESULT_OK, resultIntent); + finish(); } catch (Exception e) { e.printStackTrace(); } // If you would like to resume scanning, call this method below: - mScannerView.resumeCameraPreview(this); + //mScannerView.resumeCameraPreview(this); } @Override diff --git a/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java b/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java index b648c207..cdbc5320 100644 --- a/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java +++ b/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java @@ -2,9 +2,11 @@ package me.impy.aegis.crypto; import android.net.Uri; +import java.io.Serializable; + import me.impy.aegis.encoding.Base32; -public class KeyInfo { +public class KeyInfo implements Serializable { private String type; private String label; private byte[] secret; diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e5705fdc..0ff3f851 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -17,4 +17,13 @@ android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"/> + +