Merge "Fix the issue where shortcuts are removed in minimal device mode" into ub-launcher3-master

This commit is contained in:
TreeHugger Robot 2020-10-15 22:06:12 +00:00 committed by Android (Google) Code Review
commit 37ed5ead39
3 changed files with 18 additions and 2 deletions

View File

@ -188,6 +188,9 @@ public class LauncherProvider extends ContentProvider {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
Cursor result = qb.query(db, projection, args.where, args.args, null, null, sortOrder);
final Bundle extra = new Bundle();
extra.putString(LauncherSettings.Settings.EXTRA_DB_NAME, mOpenHelper.getDatabaseName());
result.setExtras(extra);
result.setNotificationUri(getContext().getContentResolver(), uri);
return result;

View File

@ -358,6 +358,8 @@ public class LauncherSettings {
public static final String EXTRA_VALUE = "value";
public static final String EXTRA_DB_NAME = "db_name";
public static Bundle call(ContentResolver cr, String method) {
return call(cr, method, null /* arg */);
}

View File

@ -41,6 +41,7 @@ import android.content.pm.PackageInstaller.SessionInfo;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
@ -130,6 +131,7 @@ public class LoaderTask implements Runnable {
private final Set<PackageUserKey> mPendingPackages = new HashSet<>();
private boolean mItemsDeleted = false;
private String mDbName;
public LoaderTask(LauncherAppState app, AllAppsList bgAllAppsList, BgDataModel dataModel,
ModelDelegate modelDelegate, LoaderResults results) {
@ -274,7 +276,14 @@ public class LoaderTask implements Runnable {
if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
loadFolderNames();
}
sanitizeData();
// Sanitize data re-syncs widgets/shortcuts based on the workspace loaded from db.
// sanitizeData should not be invoked if the workspace is loaded from a db different
// from the main db as defined in the invariant device profile.
// (e.g. both grid preview and minimal device mode uses a different db)
if (mApp.getInvariantDeviceProfile().dbFile.equals(mDbName)) {
sanitizeData();
}
verifyNotStopped();
updateHandler.finish();
@ -349,7 +358,9 @@ public class LoaderTask implements Runnable {
final LoaderCursor c = new LoaderCursor(
contentResolver.query(contentUri, null, selection, null, null), contentUri,
mApp, mUserManagerState);
final Bundle extras = c.getExtras();
mDbName = extras == null
? null : extras.getString(LauncherSettings.Settings.EXTRA_DB_NAME);
try {
final int appWidgetIdIndex = c.getColumnIndexOrThrow(
LauncherSettings.Favorites.APPWIDGET_ID);