From 92a0dc50159674f1b7d17bf70f4ff26893dab627 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sat, 31 Mar 2018 22:33:56 +0200 Subject: fixe scan in OmemoActivities --- .../java/de/pixart/messenger/ui/ScanActivity.java | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/main/java/de/pixart/messenger/ui/ScanActivity.java') 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 { -- cgit v1.2.3