package de.theknut.xposedgelsettings.hooks.general;
import android.appwidget.AppWidgetProviderInfo;
import android.content.ComponentName;
import android.content.pm.ResolveInfo;
import java.util.ArrayList;
import java.util.Iterator;
import de.theknut.xposedgelsettings.hooks.Common;
import de.theknut.xposedgelsettings.hooks.HooksBaseClass;
import de.theknut.xposedgelsettings.hooks.PreferencesHelper;
public class OnPackagesUpdatedHook extends HooksBaseClass {
// http://androidxref.com/4.4.2_r1/xref/packages/apps/Launcher3/src/com/android/launcher3/AppsCustomizePagedView.java#432
// public void onPackagesUpdated(ArrayList<Object> widgetsAndShortcuts)
@SuppressWarnings("unchecked")
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
if (DEBUG) log(param, "Hide Widgets");
ArrayList<Object> widgets = (ArrayList<Object>) param.args[0];
Iterator it = widgets.iterator();
while(it.hasNext()) {
Object widget = it.next();
String cmp;
if (widget instanceof AppWidgetProviderInfo) {
cmp = ((AppWidgetProviderInfo) widget).provider.flattenToString();
} else if (widget instanceof ResolveInfo) {
ResolveInfo item = (ResolveInfo) widget;
cmp = new ComponentName(item.activityInfo.packageName, item.activityInfo.loadLabel(Common.LAUNCHER_CONTEXT.getPackageManager()).toString()).flattenToString();
} else {
continue;
}
if (PreferencesHelper.hiddenWidgets.contains(cmp)) {
it.remove();
}
}
param.args[0] = widgets;
}
}