@@ -54,7 +54,7 @@ public class SelfScanningView extends CoordinatorLayout implements Checkout.OnCh
5454 private DialogInterface .OnCancelListener progressDialogCancelListener = new DialogInterface .OnCancelListener () {
5555 @ Override
5656 public void onCancel (DialogInterface dialog ) {
57- barcodeScanner . resume ();
57+ resumeBarcodeScanner ();
5858 checkout .cancel ();
5959 }
6060 };
@@ -131,7 +131,7 @@ public void onBarcodeDetected(final Barcode barcode) {
131131 productDialog .setOnDismissListener (new DialogInterface .OnDismissListener () {
132132 @ Override
133133 public void onDismiss (DialogInterface dialog ) {
134- barcodeScanner . resume ();
134+ resumeBarcodeScanner ();
135135 allowScan = true ;
136136 }
137137 });
@@ -140,7 +140,7 @@ public void onDismiss(DialogInterface dialog) {
140140 @ Override
141141 public void onShow (DialogInterface dialog ) {
142142 allowScan = false ;
143- barcodeScanner . pause ();
143+ pauseBarcodeScanner ();
144144 }
145145 });
146146
@@ -166,7 +166,7 @@ public void lookupAndShowProduct(final ScannableCode scannedCode) {
166166
167167 progressDialog .setOnCancelListener (progressDialogCancelListener );
168168 progressDialog .showAfterDelay (300 );
169- barcodeScanner . pause ();
169+ pauseBarcodeScanner ();
170170
171171 if (scannedCode .hasEmbeddedData ()){
172172 productDatabase .findByWeighItemIdOnline (scannedCode .getLookupCode (), new OnProductAvailableListener () {
@@ -235,7 +235,7 @@ private void handleProductAvailable(Product product, boolean wasOnlineProduct, S
235235
236236 private void handleProductNotFound (ScannableCode scannedCode ) {
237237 progressDialog .dismiss ();
238- barcodeScanner . resume ();
238+ resumeBarcodeScanner ();
239239 delayNextScan ();
240240
241241 Telemetry .event (Telemetry .Event .ScannedUnknownCode , scannedCode .getCode ());
@@ -247,7 +247,7 @@ private void handleProductNotFound(ScannableCode scannedCode) {
247247
248248 private void handleProductError () {
249249 progressDialog .dismiss ();
250- barcodeScanner . resume ();
250+ resumeBarcodeScanner ();
251251 delayNextScan ();
252252
253253 UIUtils .snackbar (SelfScanningView .this ,
@@ -287,15 +287,29 @@ public void onClick(DialogInterface dialog, int which) {
287287 }
288288
289289 public void resume () {
290- barcodeScanner . resume ();
290+ resumeBarcodeScanner ();
291291 }
292292
293293 public void pause () {
294- barcodeScanner .pause ();
294+ pauseBarcodeScanner ();
295+ }
296+
297+ private void pauseBarcodeScanner () {
298+ if (ActivityCompat .checkSelfPermission (getContext (), Manifest .permission .CAMERA )
299+ == PackageManager .PERMISSION_GRANTED ) {
300+ barcodeScanner .pause ();
301+ }
302+ }
303+
304+ private void resumeBarcodeScanner () {
305+ if (ActivityCompat .checkSelfPermission (getContext (), Manifest .permission .CAMERA )
306+ == PackageManager .PERMISSION_GRANTED ) {
307+ barcodeScanner .resume ();
308+ }
295309 }
296310
297311 private void showProduct (Product product , ScannableCode scannedCode ) {
298- barcodeScanner . pause ();
312+ pauseBarcodeScanner ();
299313 allowScan = false ;
300314 showProductDialog (product , scannedCode );
301315 }
0 commit comments