diff options
-rw-r--r-- | api/current.txt | 7 | ||||
-rw-r--r-- | core/java/android/content/Intent.java | 13 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageManager.java | 15 | ||||
-rw-r--r-- | non-updatable-api/current.txt | 7 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/IncrementalStates.java | 4 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 2 | ||||
-rw-r--r-- | services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java | 8 |
7 files changed, 36 insertions, 20 deletions
diff --git a/api/current.txt b/api/current.txt index 6b42af82000e..b20b861b0412 100644 --- a/api/current.txt +++ b/api/current.txt @@ -10668,12 +10668,15 @@ package android.content { field public static final String ACTION_PACKAGE_CHANGED = "android.intent.action.PACKAGE_CHANGED"; field public static final String ACTION_PACKAGE_DATA_CLEARED = "android.intent.action.PACKAGE_DATA_CLEARED"; field public static final String ACTION_PACKAGE_FIRST_LAUNCH = "android.intent.action.PACKAGE_FIRST_LAUNCH"; + field public static final String ACTION_PACKAGE_FULLY_LOADED = "android.intent.action.PACKAGE_FULLY_LOADED"; field public static final String ACTION_PACKAGE_FULLY_REMOVED = "android.intent.action.PACKAGE_FULLY_REMOVED"; field @Deprecated public static final String ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL"; field public static final String ACTION_PACKAGE_NEEDS_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_VERIFICATION"; field public static final String ACTION_PACKAGE_REMOVED = "android.intent.action.PACKAGE_REMOVED"; field public static final String ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED"; field public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED"; + field public static final String ACTION_PACKAGE_STARTABLE = "android.intent.action.PACKAGE_STARTABLE"; + field public static final String ACTION_PACKAGE_UNSTARTABLE = "android.intent.action.PACKAGE_UNSTARTABLE"; field public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED"; field public static final String ACTION_PASTE = "android.intent.action.PASTE"; field public static final String ACTION_PICK = "android.intent.action.PICK"; @@ -10838,6 +10841,7 @@ package android.content { field public static final String EXTRA_TIMEZONE = "time-zone"; field public static final String EXTRA_TITLE = "android.intent.extra.TITLE"; field public static final String EXTRA_UID = "android.intent.extra.UID"; + field public static final String EXTRA_UNSTARTABLE_REASON = "android.intent.extra.UNSTARTABLE_REASON"; field public static final String EXTRA_USER = "android.intent.extra.USER"; field public static final int FILL_IN_ACTION = 1; // 0x1 field public static final int FILL_IN_CATEGORIES = 4; // 0x4 @@ -12297,6 +12301,9 @@ package android.content.pm { field public static final int SYNCHRONOUS = 2; // 0x2 field @Nullable public static final java.util.List<java.security.cert.Certificate> TRUST_ALL; field @NonNull public static final java.util.List<java.security.cert.Certificate> TRUST_NONE; + field public static final int UNSTARTABLE_REASON_CONNECTION_ERROR = 1; // 0x1 + field public static final int UNSTARTABLE_REASON_INSUFFICIENT_STORAGE = 2; // 0x2 + field public static final int UNSTARTABLE_REASON_UNKNOWN = 0; // 0x0 field public static final int VERIFICATION_ALLOW = 1; // 0x1 field public static final int VERIFICATION_REJECT = -1; // 0xffffffff field public static final int VERSION_CODE_HIGHEST = -1; // 0xffffffff diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 5622ccab3c20..653064d41bff 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -2744,7 +2744,6 @@ public class Intent implements Parcelable, Cloneable { * </ul> * * <p class="note">This is a protected intent that can only be sent by the system. - * @hide */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_PACKAGE_STARTABLE = "android.intent.action.PACKAGE_STARTABLE"; @@ -2755,13 +2754,13 @@ public class Intent implements Parcelable, Cloneable { * <ul> * <li> {@link #EXTRA_UID} containing the integer uid assigned to the package. </li> * <li> {@link #EXTRA_PACKAGE_NAME} containing the package name. </li> - * <li> {@link #EXTRA_REASON} containing the integer indicating the reason for the state change, + * <li> {@link #EXTRA_UNSTARTABLE_REASON} containing the integer indicating the reason for + * the state change, * @see PackageManager.UnstartableReason * </li> * </ul> * * <p class="note">This is a protected intent that can only be sent by the system. - * @hide */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_PACKAGE_UNSTARTABLE = @@ -2776,7 +2775,6 @@ public class Intent implements Parcelable, Cloneable { * </ul> * * <p class="note">This is a protected intent that can only be sent by the system. - * @hide */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_PACKAGE_FULLY_LOADED = @@ -6015,6 +6013,13 @@ public class Intent implements Parcelable, Cloneable { */ public static final String EXTRA_LOCUS_ID = "android.intent.extra.LOCUS_ID"; + /** + * Intent extra: the reason that the package associated with this intent has become unstartable. + * + * <p>Type: String + */ + public static final String EXTRA_UNSTARTABLE_REASON = "android.intent.extra.UNSTARTABLE_REASON"; + // --------------------------------------------------------------------- // --------------------------------------------------------------------- // Intent flags (see mFlags variable). diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 72499d54cfed..923f8cb38d38 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -3790,8 +3790,8 @@ public abstract class PackageManager { * @hide */ @IntDef({UNSTARTABLE_REASON_UNKNOWN, - UNSTARTABLE_REASON_DATALOADER_TRANSPORT, - UNSTARTABLE_REASON_DATALOADER_STORAGE + UNSTARTABLE_REASON_CONNECTION_ERROR, + UNSTARTABLE_REASON_INSUFFICIENT_STORAGE }) @Retention(RetentionPolicy.SOURCE) public @interface UnstartableReason {} @@ -3800,23 +3800,20 @@ public abstract class PackageManager { * Unstartable state with no root cause specified. E.g., data loader seeing missing pages but * unclear about the cause. This corresponds to a generic alert window shown to the user when * the user attempts to launch the app. - * @hide */ public static final int UNSTARTABLE_REASON_UNKNOWN = 0; /** - * Unstartable state after hint from dataloader of issues with the transport layer. - * This corresponds to an alert window shown to the user indicating network errors. - * @hide + * Unstartable state due to connection issues that interrupt package loading. + * This corresponds to an alert window shown to the user indicating connection errors. */ - public static final int UNSTARTABLE_REASON_DATALOADER_TRANSPORT = 1; + public static final int UNSTARTABLE_REASON_CONNECTION_ERROR = 1; /** * Unstartable state after encountering storage limitations. * This corresponds to an alert window indicating limited storage. - * @hide */ - public static final int UNSTARTABLE_REASON_DATALOADER_STORAGE = 2; + public static final int UNSTARTABLE_REASON_INSUFFICIENT_STORAGE = 2; /** {@hide} */ public int getUserId() { diff --git a/non-updatable-api/current.txt b/non-updatable-api/current.txt index 45d22144fe8f..babd54d723b8 100644 --- a/non-updatable-api/current.txt +++ b/non-updatable-api/current.txt @@ -10668,12 +10668,15 @@ package android.content { field public static final String ACTION_PACKAGE_CHANGED = "android.intent.action.PACKAGE_CHANGED"; field public static final String ACTION_PACKAGE_DATA_CLEARED = "android.intent.action.PACKAGE_DATA_CLEARED"; field public static final String ACTION_PACKAGE_FIRST_LAUNCH = "android.intent.action.PACKAGE_FIRST_LAUNCH"; + field public static final String ACTION_PACKAGE_FULLY_LOADED = "android.intent.action.PACKAGE_FULLY_LOADED"; field public static final String ACTION_PACKAGE_FULLY_REMOVED = "android.intent.action.PACKAGE_FULLY_REMOVED"; field @Deprecated public static final String ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL"; field public static final String ACTION_PACKAGE_NEEDS_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_VERIFICATION"; field public static final String ACTION_PACKAGE_REMOVED = "android.intent.action.PACKAGE_REMOVED"; field public static final String ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED"; field public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED"; + field public static final String ACTION_PACKAGE_STARTABLE = "android.intent.action.PACKAGE_STARTABLE"; + field public static final String ACTION_PACKAGE_UNSTARTABLE = "android.intent.action.PACKAGE_UNSTARTABLE"; field public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED"; field public static final String ACTION_PASTE = "android.intent.action.PASTE"; field public static final String ACTION_PICK = "android.intent.action.PICK"; @@ -10838,6 +10841,7 @@ package android.content { field public static final String EXTRA_TIMEZONE = "time-zone"; field public static final String EXTRA_TITLE = "android.intent.extra.TITLE"; field public static final String EXTRA_UID = "android.intent.extra.UID"; + field public static final String EXTRA_UNSTARTABLE_REASON = "android.intent.extra.UNSTARTABLE_REASON"; field public static final String EXTRA_USER = "android.intent.extra.USER"; field public static final int FILL_IN_ACTION = 1; // 0x1 field public static final int FILL_IN_CATEGORIES = 4; // 0x4 @@ -12297,6 +12301,9 @@ package android.content.pm { field public static final int SYNCHRONOUS = 2; // 0x2 field @Nullable public static final java.util.List<java.security.cert.Certificate> TRUST_ALL; field @NonNull public static final java.util.List<java.security.cert.Certificate> TRUST_NONE; + field public static final int UNSTARTABLE_REASON_CONNECTION_ERROR = 1; // 0x1 + field public static final int UNSTARTABLE_REASON_INSUFFICIENT_STORAGE = 2; // 0x2 + field public static final int UNSTARTABLE_REASON_UNKNOWN = 0; // 0x0 field public static final int VERIFICATION_ALLOW = 1; // 0x1 field public static final int VERIFICATION_REJECT = -1; // 0xffffffff field public static final int VERSION_CODE_HIGHEST = -1; // 0xffffffff diff --git a/services/core/java/com/android/server/pm/IncrementalStates.java b/services/core/java/com/android/server/pm/IncrementalStates.java index dda5fafb8cb1..ababb8365c4f 100644 --- a/services/core/java/com/android/server/pm/IncrementalStates.java +++ b/services/core/java/com/android/server/pm/IncrementalStates.java @@ -376,10 +376,10 @@ public final class IncrementalStates { case IDataLoaderStatusListener.STREAM_INTEGRITY_ERROR: // fall through case IDataLoaderStatusListener.STREAM_SOURCE_ERROR: { - return PackageManager.UNSTARTABLE_REASON_DATALOADER_TRANSPORT; + return PackageManager.UNSTARTABLE_REASON_CONNECTION_ERROR; } case IDataLoaderStatusListener.STREAM_STORAGE_ERROR: { - return PackageManager.UNSTARTABLE_REASON_DATALOADER_STORAGE; + return PackageManager.UNSTARTABLE_REASON_INSUFFICIENT_STORAGE; } default: return PackageManager.UNSTARTABLE_REASON_UNKNOWN; diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index f9f9a09dee74..ff84e2ebfa51 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -17334,7 +17334,7 @@ public class PackageManagerService extends IPackageManager.Stub Bundle extras = new Bundle(); extras.putInt(Intent.EXTRA_UID, mUid); extras.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName); - extras.putInt(Intent.EXTRA_REASON, reason); + extras.putInt(Intent.EXTRA_UNSTARTABLE_REASON, reason); // send broadcast to users with this app installed sendPackageBroadcast(Intent.ACTION_PACKAGE_UNSTARTABLE, mPackageName, extras, 0 /*flags*/, diff --git a/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java b/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java index 62e135b09593..c4c2f68e8219 100644 --- a/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java @@ -146,7 +146,7 @@ public class IncrementalStatesTest { // Test that package is now unstartable assertTrue(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS)); assertFalse(mIncrementalStates.isStartable()); - assertEquals(PackageManager.UNSTARTABLE_REASON_DATALOADER_TRANSPORT, + assertEquals(PackageManager.UNSTARTABLE_REASON_CONNECTION_ERROR, mUnstartableReason.get()); } @@ -160,7 +160,7 @@ public class IncrementalStatesTest { // Test that package is now unstartable assertTrue(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS)); assertFalse(mIncrementalStates.isStartable()); - assertEquals(PackageManager.UNSTARTABLE_REASON_DATALOADER_TRANSPORT, + assertEquals(PackageManager.UNSTARTABLE_REASON_CONNECTION_ERROR, mUnstartableReason.get()); } @@ -181,7 +181,7 @@ public class IncrementalStatesTest { // Test that package is now unstartable assertTrue(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS)); assertFalse(mIncrementalStates.isStartable()); - assertEquals(PackageManager.UNSTARTABLE_REASON_DATALOADER_STORAGE, + assertEquals(PackageManager.UNSTARTABLE_REASON_INSUFFICIENT_STORAGE, mUnstartableReason.get()); } @@ -202,7 +202,7 @@ public class IncrementalStatesTest { // Test that package is now unstartable assertTrue(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS)); assertFalse(mIncrementalStates.isStartable()); - assertEquals(PackageManager.UNSTARTABLE_REASON_DATALOADER_STORAGE, + assertEquals(PackageManager.UNSTARTABLE_REASON_INSUFFICIENT_STORAGE, mUnstartableReason.get()); } |