Android系统:如何在小部件列表中隐藏某个widget或者shortcut?

小部件列表包括两种类型:widget和shortcut。如何在小部件列表中隐藏某个widget或者shortcut?

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();
    }




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值