diff --git a/api/current.txt b/api/current.txt index dd9cf382cecb..cb4a7db50ac6 100644 --- a/api/current.txt +++ b/api/current.txt @@ -858,6 +858,7 @@ package android { field public static final int resource = 16842789; // 0x1010025 field public static final int restoreAnyVersion = 16843450; // 0x10102ba field public static final deprecated int restoreNeedsApplication = 16843421; // 0x101029d + field public static final int restrictedAccountType = 16843733; // 0x10103d5 field public static final int right = 16843183; // 0x10101af field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093 field public static final int ringtoneType = 16843257; // 0x10101f9 diff --git a/core/java/android/content/pm/PackageInfo.java b/core/java/android/content/pm/PackageInfo.java index a318cf1cd6f8..fb539c572b69 100644 --- a/core/java/android/content/pm/PackageInfo.java +++ b/core/java/android/content/pm/PackageInfo.java @@ -221,6 +221,9 @@ public class PackageInfo implements Parcelable { /** @hide */ public boolean requiredForAllUsers; + /** @hide */ + public String restrictedAccountType; + public PackageInfo() { } @@ -262,6 +265,7 @@ public class PackageInfo implements Parcelable { dest.writeTypedArray(reqFeatures, parcelableFlags); dest.writeInt(installLocation); dest.writeInt(requiredForAllUsers ? 1 : 0); + dest.writeString(restrictedAccountType); } public static final Parcelable.Creator CREATOR @@ -301,5 +305,6 @@ public class PackageInfo implements Parcelable { reqFeatures = source.createTypedArray(FeatureInfo.CREATOR); installLocation = source.readInt(); requiredForAllUsers = source.readInt() != 0; + restrictedAccountType = source.readString(); } } diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index c3116566c1a6..11f9be93b6fb 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -290,6 +290,7 @@ public class PackageParser { pi.applicationInfo = generateApplicationInfo(p, flags, state, userId); pi.installLocation = p.installLocation; pi.requiredForAllUsers = p.mRequiredForAllUsers; + pi.restrictedAccountType = p.mRestrictedAccountType; pi.firstInstallTime = firstInstallTime; pi.lastUpdateTime = lastUpdateTime; if ((flags&PackageManager.GET_GIDS) != 0) { @@ -1764,6 +1765,11 @@ public class PackageParser { false)) { owner.mRequiredForAllUsers = true; } + String accountType = sa.getString(com.android.internal.R.styleable + .AndroidManifestApplication_restrictedAccountType); + if (accountType != null && accountType.length() > 0) { + owner.mRestrictedAccountType = accountType; + } } if (sa.getBoolean( @@ -3191,6 +3197,7 @@ public class PackageParser { } public final static class Package { + public String packageName; // For now we only support one application per package. @@ -3278,6 +3285,9 @@ public class PackageParser { /* An app that's required for all users and cannot be uninstalled for a user */ public boolean mRequiredForAllUsers; + /* The restricted account authenticator type that is used by this application */ + public String mRestrictedAccountType; + /** * Digest suitable for comparing whether this package's manifest is the * same as another. diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 2e4d0531724d..0afe4c132c5b 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -889,6 +889,11 @@ + +