diff options
author | Maurice Lam <yukl@google.com> | 2017-04-10 15:42:09 -0700 |
---|---|---|
committer | Maurice Lam <yukl@google.com> | 2017-04-10 15:42:09 -0700 |
commit | a3f1dc094f749e873f0c182691dca2d9e928736e (patch) | |
tree | cecb2861fa690fd479bc363d4e15910d8c776e06 /library/main/src/com/android/setupwizardlib/util | |
parent | 24885729e3571ebca96c3fb8041f882d79e0fc0c (diff) | |
download | setupwizard-a3f1dc094f749e873f0c182691dca2d9e928736e.tar.gz |
Match direct boot unaware receivers for Partner
In Partner.java, since we don't actually execute code in the package,
it is safe to match direct boot unaware receivers as well.
Test: ./gradlew connectedAndroidTest test
Bug: 36984206
Change-Id: I5ad017458db7d4af2d5a753a3f7663721291402e
Diffstat (limited to 'library/main/src/com/android/setupwizardlib/util')
-rw-r--r-- | library/main/src/com/android/setupwizardlib/util/Partner.java | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/library/main/src/com/android/setupwizardlib/util/Partner.java b/library/main/src/com/android/setupwizardlib/util/Partner.java index ada42e0..d6e4919 100644 --- a/library/main/src/com/android/setupwizardlib/util/Partner.java +++ b/library/main/src/com/android/setupwizardlib/util/Partner.java @@ -24,9 +24,13 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.graphics.drawable.Drawable; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; import android.support.annotation.VisibleForTesting; import android.util.Log; +import java.util.List; + /** * Utilities to discover and interact with partner customizations. An overlay package is one that * registers the broadcast receiver for {@code com.android.setupwizard.action.PARTNER_CUSTOMIZATION} @@ -36,11 +40,12 @@ import android.util.Log; * <p>Derived from {@code com.android.launcher3/Partner.java} */ public class Partner { + private static final String TAG = "(SUW) Partner"; /** Marker action used to discover partner */ - private static final String - ACTION_PARTNER_CUSTOMIZATION = "com.android.setupwizard.action.PARTNER_CUSTOMIZATION"; + private static final String ACTION_PARTNER_CUSTOMIZATION = + "com.android.setupwizard.action.PARTNER_CUSTOMIZATION"; private static boolean sSearched = false; private static Partner sPartner; @@ -113,7 +118,20 @@ public class Partner { if (!sSearched) { PackageManager pm = context.getPackageManager(); final Intent intent = new Intent(ACTION_PARTNER_CUSTOMIZATION); - for (ResolveInfo info : pm.queryBroadcastReceivers(intent, 0)) { + List<ResolveInfo> receivers; + if (VERSION.SDK_INT >= VERSION_CODES.N) { + receivers = pm.queryBroadcastReceivers( + intent, + PackageManager.MATCH_SYSTEM_ONLY + | PackageManager.MATCH_DIRECT_BOOT_AWARE + | PackageManager.MATCH_DIRECT_BOOT_UNAWARE); + } else { + // On versions before N, direct boot doesn't exist. And the MATCH_SYSTEM_ONLY flag + // doesn't exist so we filter for system apps in code below. + receivers = pm.queryBroadcastReceivers(intent, 0); + } + + for (ResolveInfo info : receivers) { if (info.activityInfo == null) { continue; } |