mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-28 07:46:55 +00:00
Removing support for legacy shortcuts from default layouts
Launcher will only allow deep shortcuts to be pinned on homescreen. Bug: 275875209 Test: Updated tests Flag: N/A Change-Id: I4f2674deb9cd81dd07d5d537f35a51b030a183da
This commit is contained in:
@@ -6,19 +6,15 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.LauncherApps;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.os.Process;
|
||||
import android.text.TextUtils;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.launcher3.LauncherSettings.Favorites;
|
||||
import com.android.launcher3.model.data.WorkspaceItemInfo;
|
||||
import com.android.launcher3.shortcuts.ShortcutKey;
|
||||
import com.android.launcher3.util.Partner;
|
||||
import com.android.launcher3.util.Thunk;
|
||||
import com.android.launcher3.widget.LauncherWidgetHolder;
|
||||
@@ -28,7 +24,6 @@ import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -49,8 +44,6 @@ public class DefaultLayoutParser extends AutoInstallsLayout {
|
||||
private static final String ATTR_CONTAINER = "container";
|
||||
private static final String ATTR_SCREEN = "screen";
|
||||
private static final String ATTR_FOLDER_ITEMS = "folderItems";
|
||||
private static final String ATTR_SHORTCUT_ID = "shortcutId";
|
||||
private static final String ATTR_PACKAGE_NAME = "packageName";
|
||||
|
||||
public static final String RES_PARTNER_FOLDER = "partner_folder";
|
||||
public static final String RES_PARTNER_DEFAULT_LAYOUT = "partner_default_layout";
|
||||
@@ -66,14 +59,9 @@ public class DefaultLayoutParser extends AutoInstallsLayout {
|
||||
|
||||
@Override
|
||||
protected ArrayMap<String, TagParser> getFolderElementsMap() {
|
||||
return getFolderElementsMap(mSourceRes);
|
||||
}
|
||||
|
||||
@Thunk
|
||||
ArrayMap<String, TagParser> getFolderElementsMap(Resources res) {
|
||||
ArrayMap<String, TagParser> parsers = new ArrayMap<>();
|
||||
parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
|
||||
parsers.put(TAG_SHORTCUT, new UriShortcutParser(res));
|
||||
parsers.put(TAG_SHORTCUT, new ShortcutParser());
|
||||
return parsers;
|
||||
}
|
||||
|
||||
@@ -83,7 +71,7 @@ public class DefaultLayoutParser extends AutoInstallsLayout {
|
||||
parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
|
||||
parsers.put(TAG_APPWIDGET, new AppWidgetParser());
|
||||
parsers.put(TAG_SEARCH_WIDGET, new SearchWidgetParser());
|
||||
parsers.put(TAG_SHORTCUT, new UriShortcutParser(mSourceRes));
|
||||
parsers.put(TAG_SHORTCUT, new ShortcutParser());
|
||||
parsers.put(TAG_RESOLVE, new ResolveParser());
|
||||
parsers.put(TAG_FOLDER, new MyFolderParser());
|
||||
parsers.put(TAG_PARTNER_FOLDER, new PartnerFolderParser());
|
||||
@@ -189,57 +177,6 @@ public class DefaultLayoutParser extends AutoInstallsLayout {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Shortcut parser which allows any uri and not just web urls.
|
||||
*/
|
||||
public class UriShortcutParser extends ShortcutParser {
|
||||
|
||||
public UriShortcutParser(Resources iconRes) {
|
||||
super(iconRes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseAndAdd(XmlPullParser parser) {
|
||||
final String packageName = getAttributeValue(parser, ATTR_PACKAGE_NAME);
|
||||
final String shortcutId = getAttributeValue(parser, ATTR_SHORTCUT_ID);
|
||||
if (!TextUtils.isEmpty(packageName) && !TextUtils.isEmpty(shortcutId)) {
|
||||
return parseAndAddDeepShortcut(shortcutId, packageName);
|
||||
}
|
||||
return super.parseAndAdd(parser);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method parses and adds a deep shortcut.
|
||||
* @return item id if the shortcut is successfully added else -1
|
||||
*/
|
||||
private int parseAndAddDeepShortcut(String shortcutId, String packageName) {
|
||||
try {
|
||||
LauncherApps launcherApps = mContext.getSystemService(LauncherApps.class);
|
||||
launcherApps.pinShortcuts(packageName, Collections.singletonList(shortcutId),
|
||||
Process.myUserHandle());
|
||||
Intent intent = ShortcutKey.makeIntent(shortcutId, packageName);
|
||||
mValues.put(Favorites.RESTORED, WorkspaceItemInfo.FLAG_RESTORED_ICON);
|
||||
return addShortcut(null, intent, Favorites.ITEM_TYPE_DEEP_SHORTCUT);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Unable to pin the shortcut for shortcut id = " + shortcutId
|
||||
+ " and package name = " + packageName);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Intent parseIntent(XmlPullParser parser) {
|
||||
String uri = null;
|
||||
try {
|
||||
uri = getAttributeValue(parser, ATTR_URI);
|
||||
return Intent.parseUri(uri, 0);
|
||||
} catch (URISyntaxException e) {
|
||||
Log.w(TAG, "Shortcut has malformed uri: " + uri);
|
||||
return null; // Oh well
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains a list of <favorite> nodes, and accepts the first successfully parsed node.
|
||||
*/
|
||||
@@ -284,11 +221,9 @@ public class DefaultLayoutParser extends AutoInstallsLayout {
|
||||
if (partner != null) {
|
||||
final int resId = partner.getXmlResId(RES_PARTNER_FOLDER);
|
||||
if (resId != 0) {
|
||||
final Resources partnerRes = partner.getResources();
|
||||
final XmlPullParser partnerParser = partnerRes.getXml(resId);
|
||||
final XmlPullParser partnerParser = partner.getResources().getXml(resId);
|
||||
beginDocument(partnerParser, TAG_FOLDER);
|
||||
|
||||
FolderParser folderParser = new FolderParser(getFolderElementsMap(partnerRes));
|
||||
FolderParser folderParser = new FolderParser(getFolderElementsMap());
|
||||
return folderParser.parseAndAdd(partnerParser);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user