mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
Catching RemoteExceptions when calling packagemanager to get list of shortcuts
Bug: 23796963 Change-Id: I5486c2916e981e7135edd5df360536a362bc2795
This commit is contained in:
@@ -170,6 +170,9 @@ public class LauncherModel extends BroadcastReceiver
|
||||
// sBgWidgetProviders is the set of widget providers including custom internal widgets
|
||||
public static HashMap<ComponentKey, LauncherAppWidgetProviderInfo> sBgWidgetProviders;
|
||||
|
||||
// sBgShortcutProviders is the set of custom shortcut providers
|
||||
public static List<ResolveInfo> sBgShortcutProviders;
|
||||
|
||||
// sPendingPackages is a set of packages which could be on sdcard and are not available yet
|
||||
static final HashMap<UserHandleCompat, HashSet<String>> sPendingPackages =
|
||||
new HashMap<UserHandleCompat, HashSet<String>>();
|
||||
@@ -3431,8 +3434,29 @@ public class LauncherModel extends BroadcastReceiver
|
||||
PackageManager packageManager = mApp.getContext().getPackageManager();
|
||||
final ArrayList<Object> widgetsAndShortcuts = new ArrayList<Object>();
|
||||
widgetsAndShortcuts.addAll(getWidgetProviders(mApp.getContext(), refresh));
|
||||
Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
|
||||
widgetsAndShortcuts.addAll(packageManager.queryIntentActivities(shortcutsIntent, 0));
|
||||
|
||||
// Update shortcut providers
|
||||
synchronized (sBgLock) {
|
||||
try {
|
||||
Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
|
||||
List<ResolveInfo> providers = packageManager.queryIntentActivities(shortcutsIntent, 0);
|
||||
sBgShortcutProviders = providers;
|
||||
} catch (RuntimeException e) {
|
||||
if (!LauncherAppState.isDogfoodBuild() &&
|
||||
(e.getCause() instanceof TransactionTooLargeException ||
|
||||
e.getCause() instanceof DeadObjectException)) {
|
||||
/**
|
||||
* Ignore exception and use the cached list if available.
|
||||
* Refer to {@link #getWidgetProviders(Context, boolean}} for more info.
|
||||
*/
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
if (sBgShortcutProviders != null) {
|
||||
widgetsAndShortcuts.addAll(sBgShortcutProviders);
|
||||
}
|
||||
}
|
||||
mBgWidgetsModel.setWidgetsAndShortcuts(widgetsAndShortcuts);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user