aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui/ScanActivity.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-03-31 22:33:56 +0200
committerChristian Schneppe <christian@pix-art.de>2018-03-31 22:33:56 +0200
commit92a0dc50159674f1b7d17bf70f4ff26893dab627 (patch)
tree0585ee8ee1f915d8462c74f452852fd8ea7cce24 /src/main/java/de/pixart/messenger/ui/ScanActivity.java
parentebeb5f04ab10aeeda56597b29a757e657d71d218 (diff)
fixe scan in OmemoActivities
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/ScanActivity.java')
-rw-r--r--src/main/java/de/pixart/messenger/ui/ScanActivity.java29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ScanActivity.java b/src/main/java/de/pixart/messenger/ui/ScanActivity.java
index d44f50512..7ca801948 100644
--- a/src/main/java/de/pixart/messenger/ui/ScanActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ScanActivity.java
@@ -42,6 +42,7 @@ import android.view.TextureView;
import android.view.TextureView.SurfaceTextureListener;
import android.view.View;
import android.view.WindowManager;
+import android.widget.Toast;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
@@ -67,6 +68,9 @@ import de.pixart.messenger.ui.widget.ScannerView;
public final class ScanActivity extends Activity implements SurfaceTextureListener, ActivityCompat.OnRequestPermissionsResultCallback {
public static final String INTENT_EXTRA_RESULT = "result";
+ public static final int REQUEST_SCAN_QR_CODE = 0x0987;
+ private static final int REQUEST_CAMERA_PERMISSIONS_TO_SCAN = 0x6789;
+
private static final long VIBRATE_DURATION = 50L;
private static final long AUTO_FOCUS_INTERVAL_MS = 2500L;
private static boolean DISABLE_CONTINUOUS_AUTOFOCUS = Build.MODEL.equals("GT-I9100") // Galaxy S2
@@ -263,7 +267,30 @@ public final class ScanActivity extends Activity implements SurfaceTextureListen
}
private void postFinish() {
- new Handler().postDelayed(() -> finish(), 50);
+ new Handler().postDelayed(this::finish, 50);
+ }
+
+ public static void scan(Activity activity) {
+ if (ContextCompat.checkSelfPermission(activity, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
+ Intent intent = new Intent(activity, ScanActivity.class);
+ activity.startActivityForResult(intent, REQUEST_SCAN_QR_CODE);
+ } else {
+ ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSIONS_TO_SCAN);
+ }
+
+ }
+
+ public static void onRequestPermissionResult(Activity activity, int requestCode, int[] grantResults) {
+ if (requestCode != REQUEST_CAMERA_PERMISSIONS_TO_SCAN) {
+ return;
+ }
+ if (grantResults.length > 0) {
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ scan(activity);
+ } else {
+ Toast.makeText(activity, R.string.qr_code_scanner_needs_access_to_camera, Toast.LENGTH_SHORT).show();
+ }
+ }
}
private final class AutoFocusRunnable implements Runnable {