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
}
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 {
return ExposureDatabase.with(context) { database ->
if (tempGrantedPermissions.contains(packageName to permission)) {
database.grantPermission(packageName, PackageUtils.firstSignatureDigest(context, packageName)!!, permission)
tempGrantedPermissions.remove(packageName to permission)
Status.SUCCESS
} else if (!database.hasPermission(packageName, PackageUtils.firstSignatureDigest(context, packageName)!!, permission)) {
Status(RESOLUTION_REQUIRED, "Permission EN#$permission required.", pendingConfirm(permission))
} else {
Status.SUCCESS
when {
tempGrantedPermissions.contains(packageName to permission) -> {
database.grantPermission(packageName, PackageUtils.firstSignatureDigest(context, packageName)!!, permission)
tempGrantedPermissions.remove(packageName to permission)
Status.SUCCESS
}
database.hasPermission(packageName, PackageUtils.firstSignatureDigest(context, packageName)!!, permission) -> {
Status.SUCCESS
}
!hasConfirmActivity() -> {
Status.SUCCESS
}
else -> {
Status(RESOLUTION_REQUIRED, "Permission EN#$permission required.", pendingConfirm(permission))
}
}
}
}