catch SecurityException caused by adjusting sensor related permissions

This commit is contained in:
Jonas Lochmann 2025-06-23 18:29:22 +02:00
parent acdd83c39a
commit 53732e47dd
No known key found for this signature in database
GPG key ID: 8B8C9AEE10FA5B36
2 changed files with 32 additions and 14 deletions

View file

@ -134,9 +134,19 @@ class AndroidDeviceOwnerApi(
if (VERSION.SDK_INT < VERSION_CODES.LOLLIPOP) return false if (VERSION.SDK_INT < VERSION_CODES.LOLLIPOP) return false
if (!devicePolicyManager.isDeviceOwnerApp(componentName.packageName)) return false if (!devicePolicyManager.isDeviceOwnerApp(componentName.packageName)) return false
return devicePolicyManager.setPermissionGrantState( try {
componentName, componentName.packageName, Manifest.permission.ACCESS_FINE_LOCATION, return devicePolicyManager.setPermissionGrantState(
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED componentName, componentName.packageName, Manifest.permission.ACCESS_FINE_LOCATION,
) DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED
)
} catch (ex: SecurityException) {
// set to default so that granting this manually is possible
devicePolicyManager.setPermissionGrantState(
componentName, componentName.packageName, Manifest.permission.ACCESS_FINE_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT
)
return false
}
} }
} }

View file

@ -519,16 +519,24 @@ class AndroidIntegration(context: Context): PlatformIntegration(maximumProtectio
context.packageName, context.packageName,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
).let { ).let {
if (it == DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT) { try {
policyManager.setPermissionGrantState( if (it == DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT) {
deviceAdmin, policyManager.setPermissionGrantState(
context.packageName, deviceAdmin,
Manifest.permission.ACCESS_FINE_LOCATION, context.packageName,
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) Manifest.permission.ACCESS_FINE_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED if (ContextCompat.checkSelfPermission(
else context,
DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED Manifest.permission.ACCESS_FINE_LOCATION
) ) == PackageManager.PERMISSION_GRANTED
)
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED
else
DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED
)
}
} catch (ex: SecurityException) {
// ignore
} }
} }