Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ba71bf3 authored by Makoto Onuki's avatar Makoto Onuki Committed by Android (Google) Code Review
Browse files

Merge "Let modules obtain target component of PendingIntent"

parents d9c361be db8d2bf0
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -6189,7 +6189,11 @@ package android.app {
    method public android.content.IntentSender getIntentSender();
    method public static android.app.PendingIntent getService(android.content.Context, int, @NonNull android.content.Intent, int);
    method @Deprecated public String getTargetPackage();
    method public boolean isActivity();
    method public boolean isBroadcast();
    method public boolean isForegroundService();
    method public boolean isImmutable();
    method public boolean isService();
    method @Nullable public static android.app.PendingIntent readPendingIntentOrNullFromParcel(@NonNull android.os.Parcel);
    method public void send() throws android.app.PendingIntent.CanceledException;
    method public void send(int) throws android.app.PendingIntent.CanceledException;
+12 −0
Original line number Diff line number Diff line
// Signature format: 2.0
package android {

  public static final class Manifest.permission {
    field public static final String GET_INTENT_SENDER_INTENT = "android.permission.GET_INTENT_SENDER_INTENT";
  }

}

package android.app {

  public class ActivityManager {
@@ -26,6 +34,10 @@ package android.app {
    field public static final String ACTION_NOTIFICATION_LISTENER_ENABLED_CHANGED = "android.app.action.NOTIFICATION_LISTENER_ENABLED_CHANGED";
  }

  public final class PendingIntent implements android.os.Parcelable {
    method @Nullable @RequiresPermission(android.Manifest.permission.GET_INTENT_SENDER_INTENT) public java.util.List<android.content.pm.ResolveInfo> queryIntentComponents(int);
  }

  public class StatusBarManager {
    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setExpansionDisabledForSimNetworkLock(boolean);
  }
+6 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import android.content.pm.ConfigurationInfo;
import android.content.pm.IPackageDataObserver;
import android.content.pm.ParceledListSlice;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.content.LocusId;
@@ -704,4 +705,9 @@ interface IActivityManager {
     * @throws IllegalArgumentException if the user is not a profile.
     */
    boolean stopProfile(int userId);

    /** Called by PendingIntent.queryIntentComponents() */
    List<ResolveInfo> queryIntentComponentsForIntentSender(in IIntentSender sender, int matchFlags);

    boolean isIntentSenderAService(in IIntentSender sender);
}
+45 −7
Original line number Diff line number Diff line
@@ -16,9 +16,13 @@

package android.app;

import android.Manifest.permission;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemApi.Client;
import android.annotation.TestApi;
import android.compat.Compatibility;
import android.compat.annotation.ChangeId;
@@ -29,6 +33,8 @@ import android.content.IIntentReceiver;
import android.content.IIntentSender;
import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.PackageManager.ResolveInfoFlags;
import android.content.pm.ResolveInfo;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -47,6 +53,7 @@ import com.android.internal.os.IResultReceiver;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;

/**
 * A description of an Intent and target action to perform with it.  Instances
@@ -1181,10 +1188,9 @@ public final class PendingIntent implements Parcelable {
    }

    /**
     * @hide
     * Check whether this PendingIntent will launch an Activity.
     * @return TRUE if this {@link PendingIntent} was created with
     * {@link #getActivity} or {@link #getActivities}.
     */
    @UnsupportedAppUsage
    public boolean isActivity() {
        try {
            return ActivityManager.getService()
@@ -1195,8 +1201,7 @@ public final class PendingIntent implements Parcelable {
    }

    /**
     * @hide
     * Check whether this PendingIntent will launch a foreground service
     * @return TRUE if this {@link PendingIntent} was created with {@link #getForegroundService}.
     */
    public boolean isForegroundService() {
        try {
@@ -1208,8 +1213,19 @@ public final class PendingIntent implements Parcelable {
    }

    /**
     * @hide
     * Check whether this PendingIntent will launch an Activity.
     * @return TRUE if this {@link PendingIntent} was created with {@link #getService}.
     */
    public boolean isService() {
        try {
            return ActivityManager.getService()
                    .isIntentSenderAService(mTarget);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * @return TRUE if this {@link PendingIntent} was created with {@link #getBroadcast}.
     */
    public boolean isBroadcast() {
        try {
@@ -1248,6 +1264,28 @@ public final class PendingIntent implements Parcelable {
        }
    }

    /**
     * Resolve the intent set in this {@link PendingIntent}. Note if the pending intent is
     * generated for another user, the resulting component may not exist on the calling user.
     * Use {@link android.content.pm.ApplicationInfo#uid} of the resulting
     * {@link android.content.pm.ComponentInfo} with
     * {@link android.os.UserHandle#getUserHandleForUid(int)} to see which user will receive
     * the intent.
     *
     * @param flags MATCH_* flags from {@link android.content.pm.PackageManager}.
     * @hide
     */
    @RequiresPermission(permission.GET_INTENT_SENDER_INTENT)
    @SystemApi(client = Client.MODULE_LIBRARIES)
    public @Nullable List<ResolveInfo> queryIntentComponents(@ResolveInfoFlags int flags) {
        try {
            return ActivityManager.getService()
                    .queryIntentComponentsForIntentSender(mTarget, flags);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Comparison operator on two PendingIntent objects, such that true
     * is returned then they both represent the same operation from the
+3 −2
Original line number Diff line number Diff line
@@ -2666,8 +2666,9 @@
    <permission android:name="android.permission.GET_PROCESS_STATE_AND_OOM_SCORE"
        android:protectionLevel="signature|privileged|development" />

    <!-- Allows use of PendingIntent.getIntent().
         @hide -->
    <!-- Allows use of PendingIntent.getIntent(), .
         @hide @SystemApi(client=android.annotation.SystemApi.Client.MODULE_LIBRARIES)
         -->
    <permission android:name="android.permission.GET_INTENT_SENDER_INTENT"
        android:protectionLevel="signature" />

Loading