diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2018-12-13 06:24:34 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-12-13 06:24:34 +0000 |
| commit | e64ba8b4919bda89e69f5bc73a5d19c80aee2d27 (patch) | |
| tree | 086ae6805c5a86367ed1372a24fa4f501bb87dc5 /core/java/android | |
| parent | 485577cb78cac4a610047bf62e5524636cb16601 (diff) | |
| parent | ae4a4b987b10acd64e7efc8e08486dd456aa6d3e (diff) | |
Merge "fragileUserData-apps might keep data on uninstall"
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/content/pm/ApplicationInfo.java | 19 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageParser.java | 6 |
2 files changed, 25 insertions, 0 deletions
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 07d6e4785759..c361ac12667e 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -631,6 +631,13 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { */ public static final int PRIVATE_FLAG_PROFILEABLE_BY_SHELL = 1 << 23; + /** + * Indicates whether this package requires access to non-SDK APIs. + * Only system apps and tests are allowed to use this property. + * @hide + */ + public static final int PRIVATE_FLAG_HAS_FRAGILE_USER_DATA = 1 << 24; + /** @hide */ @IntDef(flag = true, prefix = { "PRIVATE_FLAG_" }, value = { PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE, @@ -655,6 +662,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { PRIVATE_FLAG_STATIC_SHARED_LIBRARY, PRIVATE_FLAG_VENDOR, PRIVATE_FLAG_VIRTUAL_PRELOAD, + PRIVATE_FLAG_HAS_FRAGILE_USER_DATA, }) @Retention(RetentionPolicy.SOURCE) public @interface ApplicationInfoPrivateFlags {} @@ -1730,6 +1738,17 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { return (privateFlags & PRIVATE_FLAG_USES_NON_SDK_API) != 0; } + /** + * Whether an app needs to keep the app data on uninstall. + * + * @return {@code true} if the app indicates that it needs to keep the app data + * + * @hide + */ + public boolean hasFragileUserData() { + return (privateFlags & PRIVATE_FLAG_HAS_FRAGILE_USER_DATA) != 0; + } + private boolean isAllowedToUseHiddenApis() { if (isSignedWithPlatformKey()) { return true; diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index d0de9a1d2a76..61a74ded02d0 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -3710,6 +3710,12 @@ public class PackageParser { ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_USES_NON_SDK_API; } + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_hasFragileUserData, + false)) { + ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_HAS_FRAGILE_USER_DATA; + } + if (outError[0] == null) { CharSequence pname; if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.FROYO) { |
