|
| 1 | +/* THIS FILE IS AUTO-GENERATED. DO NOT MODIFY!! */ |
| 2 | + |
| 3 | +// Copyright 2020-2023 Tauri Programme within The Commons Conservancy |
| 4 | +// SPDX-License-Identifier: Apache-2.0 |
| 5 | +// SPDX-License-Identifier: MIT |
| 6 | + |
| 7 | +package com.eid_wallet.app |
| 8 | + |
| 9 | +// taken from https://github.com/ionic-team/capacitor/blob/6658bca41e78239347e458175b14ca8bd5c1d6e8/android/capacitor/src/main/java/com/getcapacitor/PermissionHelper.java |
| 10 | + |
| 11 | +import android.content.Context |
| 12 | +import android.content.pm.PackageManager |
| 13 | +import android.os.Build |
| 14 | +import androidx.core.app.ActivityCompat |
| 15 | +import java.util.ArrayList |
| 16 | + |
| 17 | +object PermissionHelper { |
| 18 | + /** |
| 19 | + * Checks if a list of given permissions are all granted by the user |
| 20 | + * |
| 21 | + * @param permissions Permissions to check. |
| 22 | + * @return True if all permissions are granted, false if at least one is not. |
| 23 | + */ |
| 24 | + fun hasPermissions(context: Context?, permissions: Array<String>): Boolean { |
| 25 | + for (perm in permissions) { |
| 26 | + if (ActivityCompat.checkSelfPermission( |
| 27 | + context!!, |
| 28 | + perm |
| 29 | + ) != PackageManager.PERMISSION_GRANTED |
| 30 | + ) { |
| 31 | + return false |
| 32 | + } |
| 33 | + } |
| 34 | + return true |
| 35 | + } |
| 36 | + |
| 37 | + /** |
| 38 | + * Check whether the given permission has been defined in the AndroidManifest.xml |
| 39 | + * |
| 40 | + * @param permission A permission to check. |
| 41 | + * @return True if the permission has been defined in the Manifest, false if not. |
| 42 | + */ |
| 43 | + fun hasDefinedPermission(context: Context, permission: String): Boolean { |
| 44 | + var hasPermission = false |
| 45 | + val requestedPermissions = getManifestPermissions(context) |
| 46 | + if (!requestedPermissions.isNullOrEmpty()) { |
| 47 | + val requestedPermissionsList = listOf(*requestedPermissions) |
| 48 | + val requestedPermissionsArrayList = ArrayList(requestedPermissionsList) |
| 49 | + if (requestedPermissionsArrayList.contains(permission)) { |
| 50 | + hasPermission = true |
| 51 | + } |
| 52 | + } |
| 53 | + return hasPermission |
| 54 | + } |
| 55 | + |
| 56 | + /** |
| 57 | + * Check whether all of the given permissions have been defined in the AndroidManifest.xml |
| 58 | + * @param context the app context |
| 59 | + * @param permissions a list of permissions |
| 60 | + * @return true only if all permissions are defined in the AndroidManifest.xml |
| 61 | + */ |
| 62 | + fun hasDefinedPermissions(context: Context, permissions: Array<String>): Boolean { |
| 63 | + for (permission in permissions) { |
| 64 | + if (!hasDefinedPermission(context, permission)) { |
| 65 | + return false |
| 66 | + } |
| 67 | + } |
| 68 | + return true |
| 69 | + } |
| 70 | + |
| 71 | + /** |
| 72 | + * Get the permissions defined in AndroidManifest.xml |
| 73 | + * |
| 74 | + * @return The permissions defined in AndroidManifest.xml |
| 75 | + */ |
| 76 | + private fun getManifestPermissions(context: Context): Array<String>? { |
| 77 | + var requestedPermissions: Array<String>? = null |
| 78 | + try { |
| 79 | + val pm = context.packageManager |
| 80 | + val packageInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { |
| 81 | + pm.getPackageInfo(context.packageName, PackageManager.PackageInfoFlags.of(PackageManager.GET_PERMISSIONS.toLong())) |
| 82 | + } else { |
| 83 | + @Suppress("DEPRECATION") |
| 84 | + pm.getPackageInfo(context.packageName, PackageManager.GET_PERMISSIONS) |
| 85 | + } |
| 86 | + if (packageInfo != null) { |
| 87 | + requestedPermissions = packageInfo.requestedPermissions |
| 88 | + } |
| 89 | + } catch (_: Exception) { |
| 90 | + } |
| 91 | + return requestedPermissions |
| 92 | + } |
| 93 | + |
| 94 | + /** |
| 95 | + * Given a list of permissions, return a new list with the ones not present in AndroidManifest.xml |
| 96 | + * |
| 97 | + * @param neededPermissions The permissions needed. |
| 98 | + * @return The permissions not present in AndroidManifest.xml |
| 99 | + */ |
| 100 | + fun getUndefinedPermissions(context: Context, neededPermissions: Array<String?>): Array<String?> { |
| 101 | + val undefinedPermissions = ArrayList<String?>() |
| 102 | + val requestedPermissions = getManifestPermissions(context) |
| 103 | + if (!requestedPermissions.isNullOrEmpty()) { |
| 104 | + val requestedPermissionsList = listOf(*requestedPermissions) |
| 105 | + val requestedPermissionsArrayList = ArrayList(requestedPermissionsList) |
| 106 | + for (permission in neededPermissions) { |
| 107 | + if (!requestedPermissionsArrayList.contains(permission)) { |
| 108 | + undefinedPermissions.add(permission) |
| 109 | + } |
| 110 | + } |
| 111 | + var undefinedPermissionArray = arrayOfNulls<String>(undefinedPermissions.size) |
| 112 | + undefinedPermissionArray = undefinedPermissions.toArray(undefinedPermissionArray) |
| 113 | + return undefinedPermissionArray |
| 114 | + } |
| 115 | + return neededPermissions |
| 116 | + } |
| 117 | +} |
0 commit comments