From c20f1b78a9328812baf540b2a5ad4b2b629ba4ac Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Tue, 27 Nov 2018 23:49:22 +0000 Subject: [PATCH] Revert "Allow location provider to deep link into permissions UI" This reverts commit ed9882833578e84de9aafcc78107897bded924ba. Reason for revert: The exposed API is not needed anymore Test: Built Bug: 118437704 Change-Id: I155eb0f7241327b34ea5beaabee514ba2a018998 --- api/system-current.txt | 2 - core/java/android/content/Intent.java | 27 ----------- .../android/location/ILocationManager.aidl | 14 ------ .../android/location/LocationManager.java | 26 ----------- .../server/LocationManagerService.java | 45 ------------------- 5 files changed, 114 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index a53ab3ecdaf14..5bd15cab879d7 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -1060,7 +1060,6 @@ package android.content { field public static final java.lang.String ACTION_INSTALL_INSTANT_APP_PACKAGE = "android.intent.action.INSTALL_INSTANT_APP_PACKAGE"; field public static final java.lang.String ACTION_INSTANT_APP_RESOLVER_SETTINGS = "android.intent.action.INSTANT_APP_RESOLVER_SETTINGS"; field public static final java.lang.String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION"; - field public static final java.lang.String ACTION_MANAGE_APP_PERMISSION = "android.intent.action.MANAGE_APP_PERMISSION"; field public static final java.lang.String ACTION_MANAGE_APP_PERMISSIONS = "android.intent.action.MANAGE_APP_PERMISSIONS"; field public static final java.lang.String ACTION_MANAGE_PERMISSIONS = "android.intent.action.MANAGE_PERMISSIONS"; field public static final java.lang.String ACTION_MANAGE_PERMISSION_APPS = "android.intent.action.MANAGE_PERMISSION_APPS"; @@ -2730,7 +2729,6 @@ package android.location { public class LocationManager { method public deprecated boolean addGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener); method public deprecated boolean addGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener); - method public android.app.PendingIntent createManageLocationPermissionIntent(java.lang.String, java.lang.String); method public void flushGnssBatch(); method public int getGnssBatchSize(); method public java.lang.String getNetworkProviderPackage(); diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index e7f0053721d1d..f80725b51f5ed 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -1756,33 +1756,6 @@ public class Intent implements Parcelable, Cloneable { public static final String ACTION_MANAGE_APP_PERMISSIONS = "android.intent.action.MANAGE_APP_PERMISSIONS"; - /** - * Activity action: Launch UI to manage a specific permissions of an app. - *

- * Input: {@link #EXTRA_PACKAGE_NAME} specifies the package whose permission - * will be managed by the launched UI. - *

- *

- * Input: {@link #EXTRA_PERMISSION_NAME} specifies the (individual) permission - * that should be managed by the launched UI. - *

- *

- *

  • {@link #EXTRA_USER} specifies the UserHandle of the user that owns the app. - *

    - *

    - * Output: Nothing. - *

    - * - * @see #EXTRA_PACKAGE_NAME - * @see #EXTRA_PERMISSION_NAME - * - * @hide - */ - @SystemApi - @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) - public static final String ACTION_MANAGE_APP_PERMISSION = - "android.intent.action.MANAGE_APP_PERMISSION"; - /** * Activity action: Launch UI to manage permissions. *

    diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl index ff2fad443bcb2..ae87998a16156 100644 --- a/location/java/android/location/ILocationManager.aidl +++ b/location/java/android/location/ILocationManager.aidl @@ -121,18 +121,4 @@ interface ILocationManager // used by gts tests to verify throttling whitelist String[] getBackgroundThrottlingWhitelist(); - - /** - * Allow the {@link android.location.LocationManager#getNetworkProviderPackage location - * provider} to start the UI to modify the location permission for a package. - * - *

    Can only be called by the location provider. - * - * @param packageName The package the permission belongs to - * @param permission The (individual) permission to switch - * - * @return A pending intent that starts the permission management UI or {@code null} if the - * intent cannot be created - */ - PendingIntent createManageLocationPermissionIntent(in String packageName, in String permission); } diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index b66ceef29cebb..3bf98b352b403 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -22,7 +22,6 @@ import static android.Manifest.permission.LOCATION_HARDWARE; import static android.Manifest.permission.WRITE_SECURE_SETTINGS; import android.Manifest; -import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresFeature; import android.annotation.RequiresPermission; @@ -2401,29 +2400,4 @@ public class LocationManager { return null; } } - - /** - * Allow the {@link android.location.LocationManager#getNetworkProviderPackage location - * provider} to start the UI to modify the location permission for a package. - * - *

    Can only be called by the location provider. - * - * @param packageName The package the permission belongs to - * @param permission The (individual) location permission to switch - * - * @return A one-shot pending intent that starts the permission management UI or {@code null} if - * the intent cannot be created - * - * @hide - */ - @SystemApi - public @Nullable PendingIntent createManageLocationPermissionIntent(@NonNull String packageName, - @NonNull String permission) { - try { - return mService.createManageLocationPermissionIntent(packageName, permission); - } catch (RemoteException e) { - e.rethrowFromSystemServer(); - return null; - } - } } diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index e5275e50e484e..cc7bf3373bdd4 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -19,7 +19,6 @@ package com.android.server; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.provider.Settings.Global.LOCATION_DISABLE_STATUS_CALLBACKS; -import android.Manifest; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; @@ -85,7 +84,6 @@ import com.android.internal.location.ProviderRequest; import com.android.internal.os.BackgroundThread; import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; -import com.android.internal.util.Preconditions; import com.android.server.location.ActivityRecognitionProxy; import com.android.server.location.GeocoderProxy; import com.android.server.location.GeofenceManager; @@ -114,7 +112,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.NoSuchElementException; -import java.util.Objects; import java.util.Set; /** @@ -3413,48 +3410,6 @@ public class LocationManagerService extends ILocationManager.Stub { } } - @Override - public PendingIntent createManageLocationPermissionIntent(String packageName, - String permission) { - Preconditions.checkNotNull(packageName); - Preconditions.checkArgument(permission.equals(Manifest.permission.ACCESS_FINE_LOCATION) - || permission.equals(Manifest.permission.ACCESS_COARSE_LOCATION) - || permission.equals(Manifest.permission.ACCESS_BACKGROUND_LOCATION)); - - int callingUid = Binder.getCallingUid(); - long token = Binder.clearCallingIdentity(); - try { - String locProvider = getNetworkProviderPackage(); - if (locProvider == null) { - return null; - } - - PackageInfo locProviderInfo; - try { - locProviderInfo = mContext.getPackageManager().getPackageInfo( - locProvider, PackageManager.MATCH_DIRECT_BOOT_AUTO); - } catch (NameNotFoundException e) { - Log.e(TAG, "Could not resolve " + locProvider, e); - return null; - } - - if (locProviderInfo.applicationInfo.uid != callingUid) { - throw new SecurityException("Only " + locProvider + " can call this API"); - } - - Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSION); - intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName); - intent.putExtra(Intent.EXTRA_PERMISSION_NAME, permission); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - - return PendingIntent.getActivity(mContext, - Objects.hash(packageName, permission), intent, - PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE); - } finally { - Binder.restoreCallingIdentity(token); - } - } - private void log(String log) { if (Log.isLoggable(TAG, Log.VERBOSE)) { Slog.d(TAG, log);