Skip to content

Commit 338ab77

Browse files
committed
fix: permission condition
1 parent 477faf8 commit 338ab77

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

app/src/main/java/com/itsaky/androidide/utils/PermissionsHelper.kt

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.itsaky.androidide.utils
33
import android.Manifest
44
import android.app.ActivityManager
55
import android.content.Context
6+
import android.content.Intent
67
import android.content.pm.PackageManager
78
import android.os.Build
89
import android.os.Environment
@@ -11,6 +12,7 @@ import androidx.annotation.RequiresApi
1112
import androidx.core.app.ActivityCompat
1213
import com.itsaky.androidide.R
1314
import com.itsaky.androidide.models.OnboardingPermissionItem
15+
import androidx.core.net.toUri
1416

1517
/**
1618
* @author Akash Yadav
@@ -26,13 +28,27 @@ object PermissionsHelper {
2628
fun canDrawOverlays(context: Context): Boolean = Settings.canDrawOverlays(context)
2729

2830
fun getOverlayPermissionState(context: Context): OverlayPermissionState {
31+
if (canDrawOverlays(context)) {
32+
return OverlayPermissionState.GRANTED
33+
}
34+
2935
val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as? ActivityManager
30-
val isLowRamDevice = activityManager?.isLowRamDevice ?: false
36+
val isLowRamAndModernAndroid = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && activityManager?.isLowRamDevice == true
37+
38+
if (isLowRamAndModernAndroid) {
39+
return OverlayPermissionState.UNSUPPORTED
40+
}
41+
42+
val intent = Intent(
43+
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
44+
"package:${context.packageName}".toUri()
45+
)
46+
val canResolveIntent = intent.resolveActivity(context.packageManager) != null
3147

32-
return when {
33-
canDrawOverlays(context) -> OverlayPermissionState.GRANTED
34-
isLowRamDevice -> OverlayPermissionState.UNSUPPORTED
35-
else -> OverlayPermissionState.REQUESTABLE
48+
return if (canResolveIntent) {
49+
OverlayPermissionState.REQUESTABLE
50+
} else {
51+
OverlayPermissionState.UNSUPPORTED
3652
}
3753
}
3854

0 commit comments

Comments
 (0)