feat: Add support for Android 4.1+ (API 16)

This change makes the app compatible with Android 4.1 (Jelly Bean) and later versions.

- Lowered minSdkVersion to 16 in app/build.gradle.
- Removed unsupported features from AndroidManifest.xml and layout files.
- Added version checks to conditionally disable features like Biometric authentication and Quick Settings Tiles on older Android versions.
- Ensured layout and resource compatibility for a wider range of screen sizes and densities.
- build: Remove git dependency from build script
- fix: Revert compileSdk and targetSdk to 35
- feat: Conditionally disable camera functionality on API < 21
pull/1696/head
google-labs-jules[bot] 2 months ago
parent eec4703fe5
commit 53f5a4688f

@ -2,6 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-sdk tools:overrideLibrary="androidx.camera.video, androidx.camera.camera2, androidx.camera.lifecycle, androidx.camera.view, androidx.camera.core" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.VIBRATE" />

@ -240,10 +240,15 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
dialog.dismiss();
startScanImageActivity();
});
view.findViewById(R.id.fab_scan).setOnClickListener(v3 -> {
View fabScan = view.findViewById(R.id.fab_scan);
if (android.os.Build.VERSION.SDK_INT < 21) {
fabScan.setVisibility(View.GONE);
} else {
fabScan.setOnClickListener(v3 -> {
dialog.dismiss();
startScanActivity();
});
}
Dialogs.showSecureDialog(dialog);
});
@ -805,7 +810,9 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
switch (action) {
case "scan":
if (android.os.Build.VERSION.SDK_INT >= 21) {
startScanActivity();
}
break;
}

@ -33,6 +33,7 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@androidx.annotation.RequiresApi(21)
public class ScannerActivity extends AegisActivity implements QrCodeAnalyzer.Listener {
private ProcessCameraProvider _cameraProvider;
private ListenableFuture<ProcessCameraProvider> _cameraProviderFuture;
@ -52,6 +53,13 @@ public class ScannerActivity extends AegisActivity implements QrCodeAnalyzer.Lis
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT < 21) {
Toast.makeText(this, R.string.camera_not_supported, Toast.LENGTH_LONG).show();
finish();
return;
}
if (abortIfOrphan(savedInstanceState)) {
return;
}

@ -619,4 +619,5 @@
<item quantity="one">%d item selected</item>
<item quantity="other">%d items selected</item>
</plurals>
<string name="camera_not_supported">Camera is not supported on this device.</string>
</resources>

Loading…
Cancel
Save