From 128f27632343ed8ad8bba2d96f4ec69c0e369de7 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Thu, 18 Apr 2013 13:37:05 -0700 Subject: Fix system server crash when uninstalling paid LS widget that has been added (issue 8647398) Change-Id: I4acf02dad6bd8347727ca4322d19e15b130a6621 --- .../internal/policy/impl/keyguard/KeyguardHostView.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java index 7fcf1d5d4c68..fbeca4f6bd24 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java @@ -1589,7 +1589,13 @@ public class KeyguardHostView extends KeyguardViewBase { @Override public void cleanUp() { - + // Make sure we let go of all widgets and their package contexts promptly. If we don't do + // this, and the associated application is uninstalled, it can cause a soft reboot. + int count = mAppWidgetContainer.getChildCount(); + for (int i = 0; i < count; i++) { + KeyguardWidgetFrame frame = mAppWidgetContainer.getWidgetPageAt(i); + frame.removeAllViews(); + } } /** @@ -1609,8 +1615,6 @@ public class KeyguardHostView extends KeyguardViewBase { return !configDisabled || isTestHarness || fileOverride; } - - public void goToUserSwitcher() { mAppWidgetContainer.setCurrentPage(getWidgetPosition(R.id.keyguard_multi_user_selector)); } -- cgit v1.2.3-59-g8ed1b