Fix di remove di callback del barcode manager nel caso di onBackPressed.

Fix UI dialog_input_quantity_v2.xml sui large display.
This commit is contained in:
2025-09-23 18:01:42 +02:00
parent ace4996c20
commit a2b53f94c6
6 changed files with 95 additions and 62 deletions

View File

@@ -2,6 +2,9 @@
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-feature android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
@@ -56,7 +59,6 @@
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.CLIENTBARCODEACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

View File

@@ -9,6 +9,7 @@ import android.text.SpannableString;
import android.util.Pair;
import android.view.Gravity;
import androidx.activity.OnBackPressedCallback;
import androidx.appcompat.widget.PopupMenu;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
@@ -138,12 +139,34 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
mBindings.bottomSheetLuContent.setListener(this);
mBottomSheetFragmentLUContentViewModel.setListener(this);
this.initVars();
this.initBarcodeReader();
this.initRecyclerView();
this.initFab();
// Registra il callback per la gestione del pulsante back
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (mBindings.bottomSheetLuContent.isExpanded()) {
mBindings.bottomSheetLuContent.collapse();
} else if (!noLUPresent.get()) {
mShouldCloseActivity = true;
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
executorService.execute(() -> {
try {
mViewmodel.closeLU(true);
} catch (Exception e) {
onError(e);
}
});
} else {
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
setEnabled(false);
getOnBackPressedDispatcher().onBackPressed();
}
}
});
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
@@ -166,28 +189,6 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
return true;
}
@Override
public void onBackPressed() {
if (this.mBindings.bottomSheetLuContent.isExpanded()) {
this.mBindings.bottomSheetLuContent.collapse();
} else if (!noLUPresent.get()) {
this.mShouldCloseActivity = true;
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
executorService.execute(() -> {
try {
this.mViewmodel.closeLU(true);
} catch (Exception e) {
this.onError(e);
}
});
} else {
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
getOnBackPressedDispatcher().onBackPressed();
}
}
private void initVars() {
this.noLUPresent.addOnPropertyChangedCallback(() -> {

View File

@@ -8,6 +8,7 @@ import android.text.SpannableString;
import android.view.View;
import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.appcompat.app.ActionBar;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
@@ -75,7 +76,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
.create()
.inject(this);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pv_ordine_acquisto_edit);
mBinding.setViewModel(this);
Ordine ordine = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_ORDER));
@@ -86,6 +86,16 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
actionBar.setDisplayHomeAsUpEnabled(true);
}
// Registra il callback per la gestione del pulsante back
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
setEnabled(false);
getOnBackPressedDispatcher().onBackPressed();
}
});
if (ordine == null) {
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
close();
@@ -242,12 +252,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
getOnBackPressedDispatcher().onBackPressed();
}
@Override
public void onBackPressed() {
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
getOnBackPressedDispatcher().onBackPressed();
}
public void manualSearch() {
BarcodeManager.disable(mBarcodeScannerInstanceID);
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", barcode -> {

View File

@@ -11,6 +11,7 @@ import android.text.SpannableString;
import android.view.Gravity;
import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.appcompat.widget.PopupMenu;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
@@ -47,12 +48,10 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.expansion.RunnableArgssss;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUlDTO;
import it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO;
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
@@ -61,13 +60,13 @@ import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.data.UntMisUtils;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.core.utility.data.UntMisUtils;
import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListView;
@@ -213,6 +212,31 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
this.initFab();
this.initRecyclerView();
// Registra il callback per la gestione del pulsante back
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (mBindings.bottomSheetLuContent.isExpanded()) {
mBindings.bottomSheetLuContent.collapse();
} else if (!noLUPresent.getValue()) {
mShouldCloseActivity = true;
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
executorService.execute(() -> {
try {
mViewmodel.requestCloseLU(true);
} catch (Exception e) {
onError(e);
}
});
} else {
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
handler.post(() -> {
setEnabled(false);
getOnBackPressedDispatcher().onBackPressed();
});
}
}
});
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mEnableFakeGiacenza = SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza();
@@ -243,27 +267,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
return true;
}
@Override
public void onBackPressed() {
if (this.mBindings.bottomSheetLuContent.isExpanded()) {
this.mBindings.bottomSheetLuContent.collapse();
} else if (!noLUPresent.getValue()) {
this.mShouldCloseActivity = true;
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
executorService.execute(() -> {
try {
this.mViewmodel.requestCloseLU(true);
} catch (Exception e) {
onError(e);
}
});
} else {
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
handler.post(() -> {
getOnBackPressedDispatcher().onBackPressed();
});
}
}
private void initVars() {
this.noLUPresent.observeForever(newValue -> {

View File

@@ -968,7 +968,7 @@
android:text="@string/action_close_ul"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:strokeColor="@color/colorPrimary"
app:strokeColor="?colorPrimary"
app:visibility="@{view.enabledLUCloseButton}" />
@@ -981,7 +981,7 @@
android:layout_marginEnd="4dp"
android:layout_weight="1"
android:onClick="@{() -> view.dismiss()}"
android:paddingEnd="3dp"
android:text="@string/abort"
android:textColor="@color/red_400"
app:strokeColor="@color/red_400"
app:layout_constraintTop_toTopOf="parent" />
@@ -996,6 +996,7 @@
android:layout_marginEnd="0dp"
android:layout_weight="1"
android:onClick="@{() -> view.save()}"
android:text="@string/action_save"
app:icon="@drawable/ic_save_24dp"
app:iconGravity="textStart"
app:layout_constraintTop_toTopOf="parent" />

View File

@@ -1,6 +1,7 @@
package it.integry.honeywellscannerlibrary;
import android.content.Context;
import android.hardware.usb.UsbDevice;
import android.os.Build;
import android.util.Pair;
import android.view.KeyEvent;
@@ -28,6 +29,8 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface {
private AidcManager manager;
private BarcodeReader barcodeReader;
private UsbDevice externalUsbScanner;
private static RunnableArgs<BarcodeScanDTO> mOnScanSuccessfull;
private static RunnableArgs<Exception> mOnScanFailed;
@@ -40,11 +43,30 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface {
@Override
public boolean isRightAdapter() {
String model = Build.MODEL;
List<String> compatibleModels = new ArrayList<>();
compatibleModels.add("EDA50");
compatibleModels.add("EDA51");
compatibleModels.add("EDA52");
compatibleModels.add("CT60");
List<String> compatibleModels = new ArrayList<>() {{
add("EDA50");
add("EDA51");
add("EDA52");
add("CT60");
}};
// UsbManager manager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
// HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
//
// if(!deviceList.isEmpty()) {
//
// List<String> externalCompatibleUsbScanners = new ArrayList<>() {{
// add("1980i");
// }};
//
// for (UsbDevice device : deviceList.values()) {
// String deviceName = device.getProductName();
// if (deviceName != null && externalCompatibleUsbScanners.contains(deviceName.toLowerCase())) {
// externalUsbScanner = device;
// return true;
// }
// }
// }
return compatibleModels.contains(model);
}