当前位置:   article > 正文

Android R在Launcher上隐藏App图标_android 10 launcher3 workspace 隐藏桌面图标解析

android 10 launcher3 workspace 隐藏桌面图标解析

网上找过很多博文,如何在Launcher界面对应用图标进行隐藏,由于已对Launcher进行了修改,所以像修改AppFilter的shouldShowApp()、LoadTask的loadAllApps()、添加PackageUpdatedTask的excute()过滤,实测都无法满足我的需求。后面通过对源码追踪成功解决,最终修改方式如下:

 涉及到的接口类路径:
packages/apps/Launcher3/src/com/android/launcher3/model/AddWorkspaceItemsTask.java

  1. public class AddWorkspaceItemsTask extends BaseModelUpdateTask
  2. ...
  3. @Override
  4. public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
  5. if (mItemList.isEmpty()) {
  6. return;
  7. }
  8. ...
  9. if (PackageManagerHelper.isSystemApp(app.getContext(), item.getIntent())) {
  10. ...
  11. }
  12. + //包名过滤
  13. + if("com.android.xxx".equals(item.getTargetComponent().getPackageName())){
  14. + continue;
  15. + }
  16. ...

 此方式可以进行单个应用图标隐藏,如果需要进行多个应用隐藏时,可以添加文件进行配置,方式如下:

  1. public class AddWorkspaceItemsTask extends BaseModelUpdateTask
  2. ...
  3. @Override
  4. public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
  5. if (mItemList.isEmpty()) {
  6. return;
  7. }
  8. ...
  9. if (PackageManagerHelper.isSystemApp(app.getContext(), item.getIntent())) {
  10. ...
  11. }
  12. + //包名过滤
  13. + String[] hideAppIconArray = app.getContext().getResources().getStringArray(R.array.array_hide_app_icon);
  14. + if (hideAppIconArray != null) {
  15. + boolean isHide = false;
  16. + for (String hideAppName : hideAppIconArray) {
  17. + if(hideAppName.equals(item.getTargetComponent().getPackageName())){
  18. + isHide = true;
  19. + break;
  20. + }
  21. + }
  22. + if (isHide) continue;
  23. + }
  24. ...

大体思路:在workspace区域添加item时,忽略掉需要隐藏的APP来解决初次加载时的隐藏。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/122474
推荐阅读
相关标签
  

闽ICP备14008679号