From c20f1b78a9328812baf540b2a5ad4b2b629ba4ac Mon Sep 17 00:00:00 2001
From: "Philip P. Moltmann"
- * 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.
- *
- *
- * 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);