小部件列表包括两种类型:widget和shortcut。如何在小部件列表中隐藏某个widget或者shortcut?
KK、L版本
请修改Launcher3/src/com/android/launcher3/AppsCustomizePagedView.java的onPackagesUpdated方法:
M版本
请修改LauncherModel.java的updateWidgetsModel方法
@Thunk void updateWidgetsModel(boolean refresh) {
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));
mBgWidgetsModel.setWidgetsAndShortcuts(widgetsAndShortcuts);
//add by lyj start hide appwidget and shortcut
for(int i=0;i<widgetsAndShortcuts.length;i++){ Object o=widgetsAndShortcuts.get(i);
if(o instanceof LauncherAppWidgetProviderInfo){//hide appwiget
LauncherAppWidgetProviderInfo info=(LauncherAppWidgetProviderInfo)o;
if(info.provider.getPackageName.equals("package Name")){
WidgetsAndShortcuts.remove(i);
i--;
}
}else{//hide shortcut
ResovleInfo info =(ResovleInfo)o;
if(info.activityInfo.packageName.equals("package Name")){
widgetsAndShortcuts.remove(i);
i--;
}
}
}
//add by lyj end
}
KK、L版本
请修改Launcher3/src/com/android/launcher3/AppsCustomizePagedView.java的onPackagesUpdated方法:
public void onPackagesUpdated(ArrayList<Object> widgetsAndShortcuts) {
LauncherAppState app = LauncherAppState.getInstance();
DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
// Get the list of widgets and shortcuts
mWidgets.clear();
if (LauncherLog.DEBUG) {
LauncherLog.d(TAG, "updatePackages: widgetsAndShortcuts size = " + widgetsAndShortcuts.size());
}
for (Object o : widgetsAndShortcuts) {
if (o instanceof AppWidgetProviderInfo) {
AppWidgetProviderInfo widget = (AppWidgetProviderInfo) o;
if (!app.shouldShowAppOrWidgetProvider(widget.provider)) {
continue;
}if (widget.minWidth > 0 && widget.minHeight > 0) {
// Ensure that all widgets we show can be added on a workspace of this size
int[] spanXY = Launcher.getSpanForWidget(mLauncher, widget);
int[] minSpanXY = Launcher.getMinSpanForWidget(mLauncher, widget);
int minSpanX = Math.min(spanXY[0], minSpanXY[0]);
int minSpanY = Math.min(spanXY[1], minSpanXY[1]);if ( minSpanX <= (int) grid.numColumns &&
minSpanY <= (int) grid.numRows) {
//hide app widget,modify here add by lyj
if(!widget.provider.getpackageName().equals("包名")){//add by lyj
mWidgets.add(widget);
}//add by lyj
} else {
Log.e(TAG, "Widget " + widget.provider + " can not fit on this device (" +
widget.minWidth + ", " + widget.minHeight + "), min span is (" + minSpanX + ", " + minSpanY + ")"
+ "), span is (" + spanXY[0] + ", " + spanXY[1] + ")");
}
} else {
Log.e(TAG, "Widget " + widget.provider + " has invalid dimensions (" +
widget.minWidth + ", " + widget.minHeight + ")");
}
} else {
// just add shortcuts add by lyj
ResolveInfo info = (ResolveInfo) o;//add by lyj
if(!info.activityInfo.packageName().equals("包名")){//add
mWidgets.add(o);
}//add
}
}
updatePageCountsAndInvalidateData();
}