EN: Only ask for confirmation if build comes with confirm ui

This commit is contained in:
Marvin W 2020-11-19 20:07:37 +01:00
parent 568c015be7
commit bc0b08c2b6
No known key found for this signature in database
GPG Key ID: 072E9235DB996F2A
1 changed files with 25 additions and 8 deletions

View File

@ -61,16 +61,33 @@ class ExposureNotificationServiceImpl(private val context: Context, private val
return pi return pi
} }
private fun hasConfirmActivity(): Boolean {
val intent = Intent(ACTION_CONFIRM)
intent.`package` = context.packageName
return try {
context.packageManager.resolveActivity(intent, 0) != null
} catch (e: Exception) {
false
}
}
private suspend fun confirmPermission(permission: String): Status { private suspend fun confirmPermission(permission: String): Status {
return ExposureDatabase.with(context) { database -> return ExposureDatabase.with(context) { database ->
if (tempGrantedPermissions.contains(packageName to permission)) { when {
database.grantPermission(packageName, PackageUtils.firstSignatureDigest(context, packageName)!!, permission) tempGrantedPermissions.contains(packageName to permission) -> {
tempGrantedPermissions.remove(packageName to permission) database.grantPermission(packageName, PackageUtils.firstSignatureDigest(context, packageName)!!, permission)
Status.SUCCESS tempGrantedPermissions.remove(packageName to permission)
} else if (!database.hasPermission(packageName, PackageUtils.firstSignatureDigest(context, packageName)!!, permission)) { Status.SUCCESS
Status(RESOLUTION_REQUIRED, "Permission EN#$permission required.", pendingConfirm(permission)) }
} else { database.hasPermission(packageName, PackageUtils.firstSignatureDigest(context, packageName)!!, permission) -> {
Status.SUCCESS Status.SUCCESS
}
!hasConfirmActivity() -> {
Status.SUCCESS
}
else -> {
Status(RESOLUTION_REQUIRED, "Permission EN#$permission required.", pendingConfirm(permission))
}
} }
} }
} }