diff options
Diffstat (limited to 'PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java')
-rw-r--r-- | PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java index 11200b204..48793ab51 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java @@ -100,6 +100,7 @@ import com.android.permissioncontroller.PermissionControllerApplication; import com.android.permissioncontroller.R; import com.android.permissioncontroller.permission.model.AppPermissionGroup; import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup; +import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo; import java.lang.annotation.Retention; import java.time.ZonedDateTime; @@ -953,6 +954,38 @@ public final class Utils { } /** + * Gets whether the STORAGE group should be hidden from the UI for this package. This is true + * when the platform is T+, and the package has legacy storage access (i.e., either the package + * has a targetSdk less than Q, or has a targetSdk equal to Q and has OPSTR_LEGACY_STORAGE). + * + * TODO jaysullivan: This is always calling AppOpsManager; not taking advantage of LiveData + * + * @param pkg The package to check + */ + public static boolean shouldShowStorage(LightPackageInfo pkg) { + if (!SdkLevel.isAtLeastT()) { + return true; + } + int targetSdkVersion = pkg.getTargetSdkVersion(); + PermissionControllerApplication app = PermissionControllerApplication.get(); + Context context = null; + try { + context = Utils.getUserContext(app, UserHandle.getUserHandleForUid(pkg.getUid())); + } catch (NameNotFoundException e) { + return true; + } + AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class); + if (appOpsManager == null) { + return true; + } + + return targetSdkVersion < Build.VERSION_CODES.Q + || (targetSdkVersion == Build.VERSION_CODES.Q + && appOpsManager.unsafeCheckOpNoThrow(OPSTR_LEGACY_STORAGE, pkg.getUid(), + pkg.getPackageName()) == MODE_ALLOWED); + } + + /** * Build a string representing the given time if it happened on the current day and the date * otherwise. * |