diff options
15 files changed, 28 insertions, 32 deletions
@@ -39,4 +39,4 @@ LOCAL_PROGUARD_FLAG_FILES := proguard.flags # LOCAL_SDK_VERSION := system_current LOCAL_PRIVATE_PLATFORM_APIS := true -include $(BUILD_PACKAGE)
\ No newline at end of file +include $(BUILD_PACKAGE) diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index bcb25526..5da0e00a 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -509,7 +509,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> } public boolean areRuntimePermissionsGranted(String[] filterPermissions) { - if (LocationUtils.isLocationGroupAndProvider(mName, mPackageInfo.packageName)) { + if (LocationUtils.isLocationGroupAndProvider(mContext, mName, mPackageInfo.packageName)) { return LocationUtils.isLocationEnabled(mContext); } final int permissionCount = mPermissions.size(); diff --git a/src/com/android/packageinstaller/permission/model/PermissionApps.java b/src/com/android/packageinstaller/permission/model/PermissionApps.java index 2a09fefc..6ce849c7 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionApps.java +++ b/src/com/android/packageinstaller/permission/model/PermissionApps.java @@ -109,7 +109,7 @@ public class PermissionApps { public int getGrantedCount(ArraySet<String> launcherPkgs) { int count = 0; for (PermissionApp app : mPermApps) { - if (!Utils.shouldShowPermission(app.getPermissionGroup())) { + if (!Utils.shouldShowPermission(mContext, app.getPermissionGroup())) { continue; } if (Utils.isSystem(app, launcherPkgs)) { @@ -126,7 +126,7 @@ public class PermissionApps { public int getTotalCount(ArraySet<String> launcherPkgs) { int count = 0; for (PermissionApp app : mPermApps) { - if (!Utils.shouldShowPermission(app.getPermissionGroup())) { + if (!Utils.shouldShowPermission(mContext, app.getPermissionGroup())) { continue; } if (Utils.isSystem(app, launcherPkgs)) { diff --git a/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceImpl.java b/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceImpl.java index ab19fa11..774d8a22 100644 --- a/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceImpl.java +++ b/src/com/android/packageinstaller/permission/service/RuntimePermissionPresenterServiceImpl.java @@ -50,7 +50,7 @@ public final class RuntimePermissionPresenterServiceImpl extends RuntimePermissi AppPermissions appPermissions = new AppPermissions(this, packageInfo, false, null); for (AppPermissionGroup group : appPermissions.getPermissionGroups()) { - if (Utils.shouldShowPermission(group)) { + if (Utils.shouldShowPermission(this, group)) { final boolean granted = group.areRuntimePermissionsGranted(); final boolean standard = Utils.OS_PKG.equals(group.getDeclaringPackage()); RuntimePermissionPresentationInfo permission = diff --git a/src/com/android/packageinstaller/permission/ui/auto/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AppPermissionsFragment.java index 5b331dd9..3d65e9f7 100644 --- a/src/com/android/packageinstaller/permission/ui/auto/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/auto/AppPermissionsFragment.java @@ -149,7 +149,7 @@ public final class AppPermissionsFragment extends Fragment{ } for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) { - if (!Utils.shouldShowPermission(group)) { + if (!Utils.shouldShowPermission(getContext(), group)) { continue; } items.add(new PermissionLineItem(group, context)); diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java index beef0b03..69f62899 100644 --- a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java @@ -199,7 +199,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader extraPerms.setTitle(R.string.additional_permissions); for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) { - if (!Utils.shouldShowPermission(group)) { + if (!Utils.shouldShowPermission(getContext(), group)) { continue; } diff --git a/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java index 5551a003..0b1c924e 100644 --- a/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java @@ -204,7 +204,7 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple boolean menuOptionsInvalided = false; for (PermissionApp app : permissionApps.getApps()) { - if (!Utils.shouldShowPermission(app.getPermissionGroup())) { + if (!Utils.shouldShowPermission(getContext(), app.getPermissionGroup())) { continue; } diff --git a/src/com/android/packageinstaller/permission/ui/handheld/PermissionPreference.java b/src/com/android/packageinstaller/permission/ui/handheld/PermissionPreference.java index 07c463c2..d564c8b2 100644 --- a/src/com/android/packageinstaller/permission/ui/handheld/PermissionPreference.java +++ b/src/com/android/packageinstaller/permission/ui/handheld/PermissionPreference.java @@ -451,7 +451,7 @@ class PermissionPreference extends MultiTargetSwitchPreference { * @return If the request was processed. */ private boolean requestChange(boolean requestGrant, @ChangeTarget int changeTarget) { - if (LocationUtils.isLocationGroupAndProvider(mGroup.getName(), + if (LocationUtils.isLocationGroupAndProvider(getContext(), mGroup.getName(), mGroup.getApp().packageName)) { LocationUtils.showLocationDialog(getContext(), getAppLabel()); return false; diff --git a/src/com/android/packageinstaller/permission/ui/handheld/ReviewPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/ReviewPermissionsFragment.java index 1b9c6888..d18b67c1 100644 --- a/src/com/android/packageinstaller/permission/ui/handheld/ReviewPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/handheld/ReviewPermissionsFragment.java @@ -290,7 +290,7 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat final boolean isPackageUpdated = isPackageUpdated(); for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) { - if (!Utils.shouldShowPermission(group) + if (!Utils.shouldShowPermission(getContext(), group) || !Utils.OS_PKG.equals(group.getDeclaringPackage())) { continue; } diff --git a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java index c57b4ba4..935d4ffe 100644 --- a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java @@ -190,7 +190,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader extraPerms.setTitle(R.string.additional_permissions); for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) { - if (!Utils.shouldShowPermission(group)) { + if (!Utils.shouldShowPermission(getContext(), group)) { continue; } @@ -277,7 +277,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader addToggledGroup(group); - if (LocationUtils.isLocationGroupAndProvider(group.getName(), group.getApp().packageName)) { + if (LocationUtils.isLocationGroupAndProvider(getContext(), group.getName(), + group.getApp().packageName)) { LocationUtils.showLocationDialog(getContext(), mAppPermissions.getAppLabel()); return false; } diff --git a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java index d659f479..0ca2f788 100644 --- a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java @@ -185,7 +185,7 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements boolean menuOptionsInvalided = false; for (PermissionApp app : permissionApps.getApps()) { - if (!Utils.shouldShowPermission(app.getPermissionGroup())) { + if (!Utils.shouldShowPermission(getContext(), app.getPermissionGroup())) { continue; } @@ -313,7 +313,7 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements return false; } - if (LocationUtils.isLocationGroupAndProvider(mPermissionApps.getGroupName(), + if (LocationUtils.isLocationGroupAndProvider(getContext(), mPermissionApps.getGroupName(), app.getPackageName())) { LocationUtils.showLocationDialog(getContext(), app.getLabel()); return false; diff --git a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java index 3de63869..20196d36 100644 --- a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java +++ b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java @@ -164,7 +164,7 @@ public final class AppPermissionsFragmentWear extends PreferenceFragment { } for (final AppPermissionGroup group : groups) { - if (!Utils.shouldShowPermission(group)) { + if (!Utils.shouldShowPermission(getContext(), group)) { continue; } @@ -322,7 +322,7 @@ public final class AppPermissionsFragmentWear extends PreferenceFragment { pref.setEnabled(false); } else { pref.setOnPreferenceChangeListener((p, newVal) -> { - if (LocationUtils.isLocationGroupAndProvider( + if (LocationUtils.isLocationGroupAndProvider(getContext(), group.getName(), group.getApp().packageName)) { LocationUtils.showLocationDialog( getContext(), mAppPermissions.getAppLabel()); diff --git a/src/com/android/packageinstaller/permission/ui/wear/ReviewPermissionsWearFragment.java b/src/com/android/packageinstaller/permission/ui/wear/ReviewPermissionsWearFragment.java index 64ef25ed..1ab4de68 100644 --- a/src/com/android/packageinstaller/permission/ui/wear/ReviewPermissionsWearFragment.java +++ b/src/com/android/packageinstaller/permission/ui/wear/ReviewPermissionsWearFragment.java @@ -135,7 +135,7 @@ public class ReviewPermissionsWearFragment extends PreferenceFragmentCompat int permOrder = ORDER_PERM_OFFSET_START; for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) { - if (!Utils.shouldShowPermission(group) + if (!Utils.shouldShowPermission(getContext(), group) || !Utils.OS_PKG.equals(group.getDeclaringPackage())) { continue; } diff --git a/src/com/android/packageinstaller/permission/utils/LocationUtils.java b/src/com/android/packageinstaller/permission/utils/LocationUtils.java index e7af3788..56491aea 100644 --- a/src/com/android/packageinstaller/permission/utils/LocationUtils.java +++ b/src/com/android/packageinstaller/permission/utils/LocationUtils.java @@ -21,17 +21,11 @@ import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; -import android.content.res.Resources; -import android.location.ILocationManager; import android.location.LocationManager; -import android.os.RemoteException; -import android.os.ServiceManager; import android.provider.Settings; import com.android.permissioncontroller.R; -import java.util.ArrayList; - public class LocationUtils { public static final String LOCATION_PERMISSION = Manifest.permission_group.LOCATION; @@ -56,16 +50,17 @@ public class LocationUtils { Settings.Secure.LOCATION_MODE_OFF) != Settings.Secure.LOCATION_MODE_OFF; } - public static boolean isLocationGroupAndProvider(String groupName, String packageName) { - return LOCATION_PERMISSION.equals(groupName) && isNetworkLocationProvider(packageName); + public static boolean isLocationGroupAndProvider(Context context, String groupName, + String packageName) { + return LOCATION_PERMISSION.equals(groupName) + && isNetworkLocationProvider(context, packageName); } - private static boolean isNetworkLocationProvider(String packageName) { - ILocationManager locationService = ILocationManager.Stub.asInterface( - ServiceManager.getService(Context.LOCATION_SERVICE)); + private static boolean isNetworkLocationProvider(Context context, String packageName) { try { - return packageName.equals(locationService.getNetworkProviderPackage()); - } catch (RemoteException e) { + return packageName.equals(context.getSystemService(LocationManager.class) + .getNetworkProviderPackage()); + } catch (Exception e) { return false; } } diff --git a/src/com/android/packageinstaller/permission/utils/Utils.java b/src/com/android/packageinstaller/permission/utils/Utils.java index 6fc17048..987b82d0 100644 --- a/src/com/android/packageinstaller/permission/utils/Utils.java +++ b/src/com/android/packageinstaller/permission/utils/Utils.java @@ -91,7 +91,7 @@ public final class Utils { * * @return */ - public static boolean shouldShowPermission(AppPermissionGroup group) { + public static boolean shouldShowPermission(Context context, AppPermissionGroup group) { boolean isSystemFixed = group.isSystemFixed(); if (group.getBackgroundPermissions() != null) { // If the foreground mode is fixed to "enabled", the background mode might still be @@ -103,7 +103,7 @@ public final class Utils { // We currently will not show permissions fixed by the system. // which is what the system does for system components. - if (isSystemFixed && !LocationUtils.isLocationGroupAndProvider( + if (isSystemFixed && !LocationUtils.isLocationGroupAndProvider(context, group.getName(), group.getApp().packageName)) { return false; } |