OSDN Git Service

Fixing icon disappearing when apps are moved to sdcard
authorSunny Goyal <sunnygoyal@google.com>
Mon, 7 Jul 2014 22:28:02 +0000 (15:28 -0700)
committerSunny Goyal <sunnygoyal@google.com>
Tue, 8 Jul 2014 00:52:35 +0000 (17:52 -0700)
For intents, external application unavailable/available, the extra argument
'replacing' is not sent for jelly beans and lower devices. Using appropriate
default value

issue: 15852084

Change-Id: I865aa22a16700629fffe440a4b92a634a0ba8ae7

src/com/android/launcher3/compat/LauncherAppsCompatV16.java

index f30c28b..de9f3a0 100644 (file)
@@ -174,13 +174,18 @@ public class LauncherAppsCompatV16 extends LauncherAppsCompat {
                     }
                 }
             } else if (Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(action)) {
-                final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
+                // EXTRA_REPLACING is available Kitkat onwards. For lower devices, it is broadcasted
+                // when moving a package or mounting/un-mounting external storage. Assume that
+                // it is a replacing operation.
+                final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING,
+                        Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT);
                 String[] packages = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST);
                 for (OnAppsChangedCallbackCompat callback : getCallbacks()) {
                     callback.onPackagesAvailable(packages, user, replacing);
                 }
             } else if (Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE.equals(action)) {
-                final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
+                final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING,
+                        Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT);
                 String[] packages = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST);
                 for (OnAppsChangedCallbackCompat callback : getCallbacks()) {
                     callback.onPackagesUnavailable(packages, user, replacing);