Android14 Launcher3 防止桌面应用图标被误删

问题描述:桌面有一些特定的应用图标,要求无法被用户移除。本案例场景具体指的是快捷图标——应用列表图标
需求:实现应用图标不能被删除。
实际操作中应用图标应该不能被拖入桌面文件夹,不能被直接移除,否则将会给系统带来严重的致命bug——删除应用列表图标后无法进入应用池。

修改代码路径:/packages/apps/Launcher3/src/com/android/launcher3/ButtonDropTarget.java
在onDragStart方法内部进行判断,如果拖拽的图标包名是不允许删除的,将mActive置为false即可。

  public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) {
    if (options.isKeyboardDrag) {
        mActive = false;
    } else {
        setupItemInfo(dragObject.dragInfo);
        mActive = supportsDrop(dragObject.dragInfo);
    }
    //start add by xu -24  : It is forbidden to hide the list of apps
    if (dragObject.dragInfo instanceof LauncherAppWidgetInfo) {
        LauncherAppWidgetInfo appWidgetInfo = (LauncherAppWidgetInfo)dragObject.dragInfo;
        ComponentName cn = appWidgetInfo.getTargetComponent();
        if(cn != null) {
            if(cn.getPackageName().equals("com.android.launcher3")){
                mActive = false;
            }
        }
    }
    //end by xu -24  
    setVisibility(mActive ? View.VISIBLE : View.GONE);
    mAccessibleDrag = options.isAccessibleDrag;
    setOnClickListener(mAccessibleDrag ? this : null);
}
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值