Loading location/java/android/location/LocationManager.java +26 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,16 @@ public class LocationManager { private final Object mLock = new Object(); /** * For apps targeting Android R and above, {@link #getProvider(String)} will no longer throw any * security exceptions. * * @hide */ @ChangeId @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q) private static final long GET_PROVIDER_SECURITY_EXCEPTIONS = 150935354L; /** * For apps targeting Android K and above, supplied {@link PendingIntent}s must be targeted to a * specific package. Loading Loading @@ -1385,6 +1395,22 @@ public class LocationManager { */ public @Nullable LocationProvider getProvider(@NonNull String provider) { Preconditions.checkArgument(provider != null, "invalid null provider"); if (!Compatibility.isChangeEnabled(GET_PROVIDER_SECURITY_EXCEPTIONS)) { if (NETWORK_PROVIDER.equals(provider) || FUSED_PROVIDER.equals(provider)) { try { mContext.enforcePermission(ACCESS_FINE_LOCATION, Process.myPid(), Process.myUid(), null); } catch (SecurityException e) { mContext.enforcePermission(ACCESS_COARSE_LOCATION, Process.myPid(), Process.myUid(), null); } } else { mContext.enforcePermission(ACCESS_FINE_LOCATION, Process.myPid(), Process.myUid(), null); } } try { ProviderProperties properties = mService.getProviderProperties(provider); if (properties == null) { Loading Loading
location/java/android/location/LocationManager.java +26 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,16 @@ public class LocationManager { private final Object mLock = new Object(); /** * For apps targeting Android R and above, {@link #getProvider(String)} will no longer throw any * security exceptions. * * @hide */ @ChangeId @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q) private static final long GET_PROVIDER_SECURITY_EXCEPTIONS = 150935354L; /** * For apps targeting Android K and above, supplied {@link PendingIntent}s must be targeted to a * specific package. Loading Loading @@ -1385,6 +1395,22 @@ public class LocationManager { */ public @Nullable LocationProvider getProvider(@NonNull String provider) { Preconditions.checkArgument(provider != null, "invalid null provider"); if (!Compatibility.isChangeEnabled(GET_PROVIDER_SECURITY_EXCEPTIONS)) { if (NETWORK_PROVIDER.equals(provider) || FUSED_PROVIDER.equals(provider)) { try { mContext.enforcePermission(ACCESS_FINE_LOCATION, Process.myPid(), Process.myUid(), null); } catch (SecurityException e) { mContext.enforcePermission(ACCESS_COARSE_LOCATION, Process.myPid(), Process.myUid(), null); } } else { mContext.enforcePermission(ACCESS_FINE_LOCATION, Process.myPid(), Process.myUid(), null); } } try { ProviderProperties properties = mService.getProviderProperties(provider); if (properties == null) { Loading