From c74e41973a74aa416e16aeadaa2f491153da26bc Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Tue, 8 Sep 2015 14:01:03 -0700 Subject: Restoring provider behavior for reloading app on old devices > For older devices, launcher will only reload in case of inserts with specific query parameters > For older devices, launcehr will notify content observers of any internal inserts > Chaning TAG for Launcher provider as max logging tag is only 23 characters Bug: 23821706 Change-Id: I32891387612d967c41ddae848c43dc4b1de1b0e9 --- src/com/android/launcher3/LauncherProvider.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index 20844ec13..8791e9e57 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -65,12 +65,11 @@ import java.util.HashSet; import java.util.List; public class LauncherProvider extends ContentProvider { - private static final String TAG = "Launcher.LauncherProvider"; + private static final String TAG = "LauncherProvider"; private static final boolean LOGD = false; private static final int DATABASE_VERSION = 26; - static final String OLD_AUTHORITY = "com.android.launcher2.settings"; public static final String AUTHORITY = ProviderConfig.AUTHORITY; static final String TABLE_FAVORITES = LauncherSettings.Favorites.TABLE_NAME; @@ -139,7 +138,7 @@ public class LauncherProvider extends ContentProvider { } private void reloadLauncherIfExternal() { - if (Binder.getCallingPid() != Process.myPid()) { + if (Utilities.ATLEAST_MARSHMALLOW && Binder.getCallingPid() != Process.myPid()) { LauncherAppState app = LauncherAppState.getInstanceNoCreate(); if (app != null) { app.reloadWorkspace(); @@ -166,7 +165,20 @@ public class LauncherProvider extends ContentProvider { uri = ContentUris.withAppendedId(uri, rowId); notifyListeners(); - reloadLauncherIfExternal(); + if (Utilities.ATLEAST_MARSHMALLOW) { + reloadLauncherIfExternal(); + } else { + // Deprecated behavior to support legacy devices which rely on provider callbacks. + LauncherAppState app = LauncherAppState.getInstanceNoCreate(); + if (app != null && "true".equals(uri.getQueryParameter("isExternalAdd"))) { + app.reloadWorkspace(); + } + + String notify = uri.getQueryParameter("notify"); + if (notify == null || "true".equals(notify)) { + getContext().getContentResolver().notifyChange(uri, null); + } + } return uri; } -- cgit v1.2.3