am 11e123f7: Merge "Check system app before removal" into jb-dev
* commit '11e123f7684378578242f5824e14ddba2f68d9ca': Check system app before removal
This commit is contained in:
@@ -1064,7 +1064,7 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
mInstaller.moveFiles();
|
mInstaller.moveFiles();
|
||||||
|
|
||||||
// Prune any system packages that no longer exist.
|
// Prune any system packages that no longer exist.
|
||||||
final List<String> possiblyDeletedSystemApps = new ArrayList<String>();
|
final List<String> possiblyDeletedUpdatedSystemApps = new ArrayList<String>();
|
||||||
if (!mOnlyCore) {
|
if (!mOnlyCore) {
|
||||||
Iterator<PackageSetting> psit = mSettings.mPackages.values().iterator();
|
Iterator<PackageSetting> psit = mSettings.mPackages.values().iterator();
|
||||||
while (psit.hasNext()) {
|
while (psit.hasNext()) {
|
||||||
@@ -1104,7 +1104,10 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
mInstaller.remove(ps.name, 0);
|
mInstaller.remove(ps.name, 0);
|
||||||
sUserManager.removePackageForAllUsers(ps.name);
|
sUserManager.removePackageForAllUsers(ps.name);
|
||||||
} else {
|
} else {
|
||||||
possiblyDeletedSystemApps.add(ps.name);
|
final PackageSetting disabledPs = mSettings.getDisabledSystemPkgLPr(ps.name);
|
||||||
|
if (disabledPs.codePath == null || !disabledPs.codePath.exists()) {
|
||||||
|
possiblyDeletedUpdatedSystemApps.add(ps.name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1135,18 +1138,33 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
scanMode, 0);
|
scanMode, 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove disable package settings for any system apps
|
* Remove disable package settings for any updated system
|
||||||
* that were removed via an OTA.
|
* apps that were removed via an OTA. If they're not a
|
||||||
|
* previously-updated app, remove them completely.
|
||||||
|
* Otherwise, just revoke their system-level permissions.
|
||||||
*/
|
*/
|
||||||
for (String deletedAppName : possiblyDeletedSystemApps) {
|
for (String deletedAppName : possiblyDeletedUpdatedSystemApps) {
|
||||||
PackageParser.Package deletedPkg = mPackages.get(deletedAppName);
|
PackageParser.Package deletedPkg = mPackages.get(deletedAppName);
|
||||||
if (deletedPkg != null) {
|
mSettings.removeDisabledSystemPackageLPw(deletedAppName);
|
||||||
mSettings.removeDisabledSystemPackageLPw(deletedAppName);
|
|
||||||
|
String msg;
|
||||||
|
if (deletedPkg == null) {
|
||||||
|
msg = "Updated system package " + deletedAppName
|
||||||
|
+ " no longer exists; wiping its data";
|
||||||
|
|
||||||
|
mInstaller.remove(deletedAppName, 0);
|
||||||
|
sUserManager.removePackageForAllUsers(deletedAppName);
|
||||||
|
} else {
|
||||||
|
msg = "Updated system app + " + deletedAppName
|
||||||
|
+ " no longer present; removing system privileges for "
|
||||||
|
+ deletedAppName;
|
||||||
|
|
||||||
deletedPkg.applicationInfo.flags &= ~ApplicationInfo.FLAG_SYSTEM;
|
deletedPkg.applicationInfo.flags &= ~ApplicationInfo.FLAG_SYSTEM;
|
||||||
|
|
||||||
PackageSetting deletedPs = mSettings.mPackages.get(deletedAppName);
|
PackageSetting deletedPs = mSettings.mPackages.get(deletedAppName);
|
||||||
deletedPs.pkgFlags &= ~ApplicationInfo.FLAG_SYSTEM;
|
deletedPs.pkgFlags &= ~ApplicationInfo.FLAG_SYSTEM;
|
||||||
}
|
}
|
||||||
|
reportSettingsProblem(Log.WARN, msg);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mAppInstallObserver = null;
|
mAppInstallObserver = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user