From f8f4b3996509fd39edb40b5e94c8713931076a1c Mon Sep 17 00:00:00 2001 From: pokamest Date: Mon, 20 Dec 2021 02:42:16 +0300 Subject: [PATCH] qzxing submodule --- client/3rd/qzxing | 1 + .../org/ftylitak/qzxing/NativeFunctions.java | 6 +++ .../ftylitak/qzxing/QZXingLiveActivity.java | 25 +++++++++++ .../src/org/ftylitak/qzxing/Utilities.java | 42 +++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 160000 client/3rd/qzxing create mode 100644 client/android/src/org/ftylitak/qzxing/NativeFunctions.java create mode 100644 client/android/src/org/ftylitak/qzxing/QZXingLiveActivity.java create mode 100644 client/android/src/org/ftylitak/qzxing/Utilities.java diff --git a/client/3rd/qzxing b/client/3rd/qzxing new file mode 160000 index 000000000..2fd4dd60c --- /dev/null +++ b/client/3rd/qzxing @@ -0,0 +1 @@ +Subproject commit 2fd4dd60c04a29c6d1271fdd9ae25378b8f61ec8 diff --git a/client/android/src/org/ftylitak/qzxing/NativeFunctions.java b/client/android/src/org/ftylitak/qzxing/NativeFunctions.java new file mode 100644 index 000000000..487fc6564 --- /dev/null +++ b/client/android/src/org/ftylitak/qzxing/NativeFunctions.java @@ -0,0 +1,6 @@ +package org.ftylitak.qzxing; + +public class NativeFunctions { + public static native void onPermissionsGranted(); + public static native void onPermissionsDenied(); +} diff --git a/client/android/src/org/ftylitak/qzxing/QZXingLiveActivity.java b/client/android/src/org/ftylitak/qzxing/QZXingLiveActivity.java new file mode 100644 index 000000000..37ccb6ce3 --- /dev/null +++ b/client/android/src/org/ftylitak/qzxing/QZXingLiveActivity.java @@ -0,0 +1,25 @@ +package org.ftylitak.qzxing; + +import android.Manifest; +import android.content.pm.PackageManager; +import org.qtproject.qt5.android.bindings.QtActivity; +import static org.ftylitak.qzxing.Utilities.REQUEST_CAMERA; + +public class QZXingLiveActivity extends QtActivity { + @Override + public void onRequestPermissionsResult(int requestCode, + String permissions[], int[] grantResults) { + switch (requestCode) { + case REQUEST_CAMERA: { + // If request is cancelled, the result arrays are empty. + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + NativeFunctions.onPermissionsGranted(); + } else { + NativeFunctions.onPermissionsDenied(); + } + return; + } + } + } +} diff --git a/client/android/src/org/ftylitak/qzxing/Utilities.java b/client/android/src/org/ftylitak/qzxing/Utilities.java new file mode 100644 index 000000000..ced994b9f --- /dev/null +++ b/client/android/src/org/ftylitak/qzxing/Utilities.java @@ -0,0 +1,42 @@ +package org.ftylitak.qzxing; + +import android.Manifest; +import android.app.Activity; +import android.content.pm.PackageManager; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + +import java.util.ArrayList; + +public class Utilities { + + public static final int REQUEST_CAMERA = 0; + + public static final String[] requiredPermissionsModifyPhoneState = { + Manifest.permission.CAMERA, + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE + }; + + public static void checkAndRequestPermissionList(Activity activity, String[] permissions) { + ArrayList permissionsToRequest = new ArrayList<>(); + for (int i = 0; i < permissions.length; i++) { + if (ContextCompat.checkSelfPermission(activity, permissions[i]) + != PackageManager.PERMISSION_GRANTED) + permissionsToRequest.add(permissions[i]); + } + + if (permissionsToRequest.size() != 0) + ActivityCompat.requestPermissions(activity, + permissionsToRequest.toArray(new String[0]), + REQUEST_CAMERA); + else + NativeFunctions.onPermissionsGranted(); + } + + public static void requestQZXingPermissions(Activity activity) { + checkAndRequestPermissionList(activity, requiredPermissionsModifyPhoneState); + } + + +}