Merge "Let self-targeting apps be able access OverlayManager"

This commit is contained in:
TreeHugger Robot
2022-11-30 01:59:19 +00:00
committed by Android (Google) Code Review
2 changed files with 20 additions and 1 deletions

View File

@@ -58,6 +58,7 @@ import android.companion.CompanionDeviceManager;
import android.companion.ICompanionDeviceManager;
import android.companion.virtual.IVirtualDeviceManager;
import android.companion.virtual.VirtualDeviceManager;
import android.compat.Compatibility;
import android.content.ClipboardManager;
import android.content.ContentCaptureOptions;
import android.content.Context;
@@ -1092,7 +1093,10 @@ public final class SystemServiceRegistry {
new CachedServiceFetcher<OverlayManager>() {
@Override
public OverlayManager createService(ContextImpl ctx) throws ServiceNotFoundException {
IBinder b = ServiceManager.getServiceOrThrow(Context.OVERLAY_SERVICE);
final IBinder b =
(Compatibility.isChangeEnabled(OverlayManager.SELF_TARGETING_OVERLAY))
? ServiceManager.getService(Context.OVERLAY_SERVICE)
: ServiceManager.getServiceOrThrow(Context.OVERLAY_SERVICE);
return new OverlayManager(ctx, IOverlayManager.Stub.asInterface(b));
}});

View File

@@ -91,6 +91,21 @@ public class OverlayManager {
@EnabledSince(targetSdkVersion = Build.VERSION_CODES.R)
private static final long THROW_SECURITY_EXCEPTIONS = 147340954;
/**
* Applications can use OverlayManager to create overlays to overlay on itself resources. The
* overlay target is itself and the work range is only in caller application.
*
* <p>In {@link android.content.Context#getSystemService(String)}, it crashes because of {@link
* java.lang.NullPointerException} if the parameter is OverlayManager. if the self-targeting is
* enabled, the caller application can get the OverlayManager instance to use self-targeting
* functionality.
*
* @hide
*/
@ChangeId
@EnabledSince(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
public static final long SELF_TARGETING_OVERLAY = 205919743;
/**
* Creates a new instance.
*