diff options
| -rw-r--r-- | core/java/android/content/pm/PackageManagerInternal.java | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/content/SyncManager.java | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/core/java/android/content/pm/PackageManagerInternal.java b/core/java/android/content/pm/PackageManagerInternal.java index 6272822ac308..b3e25d1d71b3 100644 --- a/core/java/android/content/pm/PackageManagerInternal.java +++ b/core/java/android/content/pm/PackageManagerInternal.java @@ -172,6 +172,7 @@ public abstract class PackageManagerInternal { * @param packageName The package name. * @param userId The user for which to check. * @return Whether was launched. + * @throws IllegalArgumentException if the package is not found */ public abstract boolean wasPackageEverLaunched(String packageName, int userId); diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index bbad493a913f..1a27a39bd1bf 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -907,7 +907,12 @@ public class SyncManager { Bundle finalExtras = new Bundle(extras); String packageName = syncAdapterInfo.componentName.getPackageName(); // If the app did not run and has no account access, done - if (!mPackageManagerInternal.wasPackageEverLaunched(packageName, userId)) { + try { + if (!mPackageManagerInternal.wasPackageEverLaunched(packageName, userId)) { + continue; + } + } catch (IllegalArgumentException e) { + // Package not found, race with an uninstall continue; } mAccountManagerInternal.requestAccountAccess(account.account, |