diff --git a/app/src/main/java/net/bierbaumer/otp_authenticator/MainActivity.java b/app/src/main/java/net/bierbaumer/otp_authenticator/MainActivity.java
index 0ea4f9fc..a435ffc1 100644
--- a/app/src/main/java/net/bierbaumer/otp_authenticator/MainActivity.java
+++ b/app/src/main/java/net/bierbaumer/otp_authenticator/MainActivity.java
@@ -7,6 +7,8 @@
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
+import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
@@ -16,6 +18,7 @@
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
+import android.util.Log;
import android.view.ActionMode;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -27,10 +30,15 @@
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.EditText;
+import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.WriterException;
import com.google.zxing.client.android.Intents;
+import com.google.zxing.common.BitMatrix;
import com.google.zxing.integration.android.IntentIntegrator;
import java.util.ArrayList;
@@ -312,6 +320,30 @@ public void onClick(DialogInterface dialog, int whichButton) {
alert.show();
+ return true;
+ } else if (id == R.id.action_qrcode) {
+ AlertDialog.Builder alert = new AlertDialog.Builder(this);
+
+ try {
+ BitMatrix bitMatrix = new MultiFormatWriter().encode("otpauth://totp/" + adapter.getCurrentSelection().getLabel() + "?secret=" + adapter.getCurrentSelection().getSecret(), BarcodeFormat.QR_CODE, 400, 400, null);
+ int height = bitMatrix.getHeight();
+ int width = bitMatrix.getWidth();
+ Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
+ for (int x = 0; x < width; x++) {
+ for (int y = 0; y < height; y++) {
+ bitmap.setPixel(x, y, bitMatrix.get(x, y) ? Color.BLACK : Color.WHITE);
+ }
+ }
+ ImageView image = new ImageView(getApplicationContext());
+ image.setImageBitmap(bitmap);
+
+ alert.setView(image);
+
+ alert.show();
+ } catch (WriterException e) {
+ Log.e(MainActivity.class.getSimpleName(), e.getMessage());
+ }
+
return true;
}
diff --git a/app/src/main/res/menu/menu_edit.xml b/app/src/main/res/menu/menu_edit.xml
index 197e5c61..fc6611cc 100644
--- a/app/src/main/res/menu/menu_edit.xml
+++ b/app/src/main/res/menu/menu_edit.xml
@@ -3,6 +3,12 @@
xmlns:tools="http://schemas.android.com/tools"
>
+
- OTP Authenticator
Authenticator
No account has been added yet
+ Show QR code
Delete
Edit
Scan QR Code