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
try {
return devicePolicyManager.setPermissionGrantState( return devicePolicyManager.setPermissionGrantState(
componentName, componentName.packageName, Manifest.permission.ACCESS_FINE_LOCATION, componentName, componentName.packageName, Manifest.permission.ACCESS_FINE_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED 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,17 +519,25 @@ class AndroidIntegration(context: Context): PlatformIntegration(maximumProtectio
context.packageName, context.packageName,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
).let { ).let {
try {
if (it == DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT) { if (it == DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT) {
policyManager.setPermissionGrantState( policyManager.setPermissionGrantState(
deviceAdmin, deviceAdmin,
context.packageName, context.packageName,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) if (ContextCompat.checkSelfPermission(
context,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
)
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED
else else
DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED
) )
} }
} catch (ex: SecurityException) {
// ignore
}
} }
policyManager.setPermissionGrantState( policyManager.setPermissionGrantState(