diff options
Diffstat (limited to 'src/com/android/packageinstaller/permission/model/PermissionApps.java')
-rw-r--r-- | src/com/android/packageinstaller/permission/model/PermissionApps.java | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/src/com/android/packageinstaller/permission/model/PermissionApps.java b/src/com/android/packageinstaller/permission/model/PermissionApps.java index e5d96d55..be32f2ac 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionApps.java +++ b/src/com/android/packageinstaller/permission/model/PermissionApps.java @@ -24,6 +24,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PermissionInfo; import android.graphics.drawable.Drawable; import android.os.AsyncTask; +import android.os.Process; import android.os.UserHandle; import android.os.UserManager; import android.util.ArrayMap; @@ -35,7 +36,6 @@ import com.android.packageinstaller.R; import com.android.packageinstaller.permission.utils.Utils; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; @@ -120,7 +120,7 @@ public class PermissionApps { return count; } - public Collection<PermissionApp> getApps() { + public List<PermissionApp> getApps() { return mPermApps; } @@ -149,9 +149,10 @@ public class PermissionApps { ArrayList<PermissionApp> permApps = new ArrayList<>(); - for (UserHandle user : UserManager.get(mContext).getUserProfiles()) { + UserManager userManager = mContext.getSystemService(UserManager.class); + for (UserHandle user : userManager.getUserProfiles()) { List<PackageInfo> apps = mCache != null ? mCache.getPackages(user.getIdentifier()) - : mPm.getInstalledPackages(PackageManager.GET_PERMISSIONS, + : mPm.getInstalledPackagesAsUser(PackageManager.GET_PERMISSIONS, user.getIdentifier()); final int N = apps.size(); @@ -182,17 +183,31 @@ public class PermissionApps { || (requestedPermissionInfo.flags & PermissionInfo.FLAG_INSTALLED) == 0 || (requestedPermissionInfo.flags - & PermissionInfo.FLAG_HIDDEN) != 0) { + & PermissionInfo.FLAG_REMOVED) != 0) { continue; } AppPermissionGroup group = AppPermissionGroup.create(mContext, app, groupInfo, groupPermInfos, user); + if (group == null) { + continue; + } + String label = mSkipUi ? app.packageName : app.applicationInfo.loadLabel(mPm).toString(); - PermissionApp permApp = new PermissionApp(app.packageName, - group, label, getBadgedIcon(app.applicationInfo), + + Drawable icon = null; + if (!mSkipUi) { + UserHandle userHandle = new UserHandle( + UserHandle.getUserId(group.getApp().applicationInfo.uid)); + + icon = mPm.getUserBadgedIcon( + mPm.loadUnbadgedItemIcon(app.applicationInfo, app.applicationInfo), + userHandle); + } + + PermissionApp permApp = new PermissionApp(app.packageName, group, label, icon, app.applicationInfo); permApps.add(permApp); @@ -246,15 +261,6 @@ public class PermissionApps { return null; } - private Drawable getBadgedIcon(ApplicationInfo appInfo) { - if (mSkipUi) { - return null; - } - Drawable unbadged = appInfo.loadUnbadgedIcon(mPm); - return mPm.getUserBadgedIcon(unbadged, - new UserHandle(UserHandle.getUserId(appInfo.uid))); - } - private void loadGroupInfo() { PackageItemInfo info; try { @@ -317,6 +323,10 @@ public class PermissionApps { return mAppPermissionGroup.areRuntimePermissionsGranted(); } + public boolean isReviewRequired() { + return mAppPermissionGroup.isReviewRequired(); + } + public void grantRuntimePermissions() { mAppPermissionGroup.grantRuntimePermissions(false); } @@ -341,8 +351,8 @@ public class PermissionApps { return mAppPermissionGroup.hasRuntimePermission(); } - public boolean hasAppOpPermissions() { - return mAppPermissionGroup.hasAppOpPermission(); + public int getUserId() { + return mAppPermissionGroup.getUserId(); } public String getPackageName() { @@ -401,7 +411,7 @@ public class PermissionApps { public synchronized List<PackageInfo> getPackages(int userId) { List<PackageInfo> ret = mPackageInfoCache.get(userId); if (ret == null) { - ret = mPm.getInstalledPackages(PackageManager.GET_PERMISSIONS, userId); + ret = mPm.getInstalledPackagesAsUser(PackageManager.GET_PERMISSIONS, userId); mPackageInfoCache.put(userId, ret); } return ret; |