summaryrefslogtreecommitdiff
path: root/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java
diff options
context:
space:
mode:
Diffstat (limited to 'PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java')
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java33
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.
*