From e0d340952d5658e668dbb675569f9877967cfbda Mon Sep 17 00:00:00 2001 From: Andre Ippisch Date: Tue, 7 Jan 2020 13:00:51 +0100 Subject: Camera permission behaviour (#505) * Remove unused else * Remove SDK version check since we are on minimum 24 already * Add intent key about missing camera permission * Add boolean value to show error dialog - always true for the beginning to keep current behaviour * Make displaying an error dialog for missing camera permissions optional * Add intent extras for Intent initialisation * Initialise camera permission dialog visibility from Intent * Add original intent to IntentResult * Use original intent in IntentResult * Make onRequestPermissionResult public again * Forward onRequestPermissionResult * React on Intent information - for example on the missing camera permission * Revert "Remove SDK version check since we are on minimum 24 already" This reverts commit 8f79f56a * Add missing imports --- sample/src/main/java/example/zxing/CustomScannerActivity.java | 8 ++++++++ sample/src/main/java/example/zxing/MainActivity.java | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'sample/src/main/java/example') diff --git a/sample/src/main/java/example/zxing/CustomScannerActivity.java b/sample/src/main/java/example/zxing/CustomScannerActivity.java index 70f2df9b..ef41f1c5 100644 --- a/sample/src/main/java/example/zxing/CustomScannerActivity.java +++ b/sample/src/main/java/example/zxing/CustomScannerActivity.java @@ -8,6 +8,8 @@ import android.view.KeyEvent; import android.view.View; import android.widget.Button; +import androidx.annotation.NonNull; + import com.journeyapps.barcodescanner.CaptureManager; import com.journeyapps.barcodescanner.DecoratedBarcodeView; import com.journeyapps.barcodescanner.ViewfinderView; @@ -45,6 +47,7 @@ public class CustomScannerActivity extends Activity implements capture = new CaptureManager(this, barcodeScannerView); capture.initializeFromIntent(getIntent(), savedInstanceState); + capture.setShowMissingCameraPermissionDialog(false); capture.decode(); changeMaskColor(null); @@ -116,4 +119,9 @@ public class CustomScannerActivity extends Activity implements public void onTorchOff() { switchFlashlightButton.setText(R.string.turn_on_flashlight); } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + capture.onRequestPermissionsResult(requestCode, permissions, grantResults); + } } diff --git a/sample/src/main/java/example/zxing/MainActivity.java b/sample/src/main/java/example/zxing/MainActivity.java index 9c879278..99a3b620 100644 --- a/sample/src/main/java/example/zxing/MainActivity.java +++ b/sample/src/main/java/example/zxing/MainActivity.java @@ -128,8 +128,14 @@ public class MainActivity extends AppCompatActivity { IntentResult result = IntentIntegrator.parseActivityResult(resultCode, data); if(result.getContents() == null) { - Log.d("MainActivity", "Cancelled scan"); - Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); + Intent originalIntent = result.getOriginalIntent(); + if (originalIntent == null) { + Log.d("MainActivity", "Cancelled scan"); + Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); + } else if(originalIntent.hasExtra(Intents.Scan.MISSING_CAMERA_PERMISSION)) { + Log.d("MainActivity", "Cancelled scan due to missing camera permission"); + Toast.makeText(this, "Cancelled due to missing camera permission", Toast.LENGTH_LONG).show(); + } } else { Log.d("MainActivity", "Scanned"); Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show(); -- cgit v1.2.3