@@ -3,6 +3,7 @@ package com.itsaky.androidide.utils
33import android.Manifest
44import android.app.ActivityManager
55import android.content.Context
6+ import android.content.Intent
67import android.content.pm.PackageManager
78import android.os.Build
89import android.os.Environment
@@ -11,6 +12,7 @@ import androidx.annotation.RequiresApi
1112import androidx.core.app.ActivityCompat
1213import com.itsaky.androidide.R
1314import 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