当前位置: 首页 > news >正文

Android13 Framework隐藏某些App

设备开发中,有的要带通话功能,有的不带通话功能。则需要隐藏对应的一些App。

实现以上功能需要在,抽屉里隐藏,抽屉里的上层应用推荐隐藏,Setting 全部显示全部App的设置里隐藏。

QSSI.13/packages/apps/Launcher3/src/com/android/launcher3/AppFilter.java

  public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {Context context = app.getContext();
....
for (AppTarget target : mTargets) {WorkspaceItemInfo itemInfo;ShortcutInfo si = target.getShortcutInfo();String className = target.getClassName();if(status==0){if (className.contains("org.yyyy.xx") ||className.contains("com.google.android.apps.messaging") ||className.contains("com.google.android.contacts")) {continue;}}

QSSI.13/packages/apps/Settings/src/com/android/settings/applications/manageapplications/ManageApplications.java

 @Overridepublic void onRebuildComplete(ArrayList<AppEntry> entries) {if (DEBUG) {Log.d(TAG, "onRebuildComplete size=" + entries.size());}// Preload top visible icons of app list.AppUtils.preloadTopIcons(mContext, entries,mContext.getResources().getInteger(R.integer.config_num_visible_app_icons));final int filterType = mAppFilter.getFilterType();if (filterType == FILTER_APPS_POWER_ALLOWLIST|| filterType == FILTER_APPS_POWER_ALLOWLIST_ALL) {entries = removeDuplicateIgnoringUser(entries);}mEntries = entries;hideSomeApp()}private void hideSomeApp() {if(!hasPhone(mContext)){int remove = 0;Iterator<ApplicationsState.AppEntry> iterator = mEntries.iterator();while (iterator.hasNext()) {ApplicationsState.AppEntry appEntry = iterator.next();String pkgName = appEntry.info.packageName;if (pkgName.equals("org.xxxx.yyyy")//|| pkgName.equals("com.google.android.apps.messaging")|| pkgName.equals("com.google.android.contacts")) {iterator.remove();remove++;}if (remove == 3) {break;}}}}

QSSI.13/packages/apps/Launcher3/quickstep/src/com/android/launcher3/model/PredictionUpdateTask.java

    public boolean shouldShowApp(ComponentName app) {String packageName = app.getPackageName();//        String clzName = app.getClassName();
//        Log.e(TAG, "packageName ============ " + packageName);
//        Log.e(TAG, "clzName ============ " + clzName);if(!hasPhone(context)){if (packageName.equals("org.xxx.yyyy")  || packageName.equals("com.google.android.apps.messaging")|| packageName.equals("com.google.android.contacts")) {return false;}}//com.google.android.apps.messagingreturn !mFilteredComponents.contains(app);}

可以在Setting设置参数里添加一个参数,进行判断,可以动态的配置功能。

    public boolean hasPhone(Context context) {//0:未启用 1:启用int phoneStatus = android.provider.Settings.Global.getInt(context.getContentResolver(), "xxxYYYY", 0);if (phoneStatus == 0) {return false;} else {return true;}}

http://www.dtcms.com/a/325906.html

相关文章:

  • 【深度学习基础】贝叶斯理论
  • Next.js API 路由:构建后端端点
  • 数据结构3线性表——单链表(C)
  • Flutter - 应用启动/路由管理
  • 13、Docker Compose 安装 Redis 哨兵集群(一主两从)
  • 容器技术之docker
  • Excel 连接阿里云 RDS MySQL
  • AAAI-2025 | 北理工具身导航新范式!FloNa:基于平面图引导的具身视觉导航
  • Dashboard.vue 组件分析
  • CLIP在文生图模型中的应用
  • 《范仲淹传》读书笔记与摘要
  • sqli-labs通关笔记-第42关 POST字符型堆叠注入(单引号闭合 手工注入+脚本注入两种方法)
  • pdf转word教程
  • ERA5---MATLAB处理水汽数据与臭氧数据的读取与重采样-重复性工作
  • 基于模型预测控制的主蒸汽温度单步预测MATLAB实现
  • 大数据系统架构模式:驾驭海量数据的工程范式
  • 蓝桥杯算法之搜索章 - 4
  • 基于领域事件驱动的微服务架构设计与实践
  • 鸿蒙Des 加密解密 C++版本
  • POI导入时相关的EXCEL校验
  • 使用行为树控制机器人(三) ——通用端口
  • Python面试题及详细答案150道(41-55) -- 面向对象编程篇
  • 《基于Redis实现高效消息队列的完整指南》
  • 在 RHEL9 上搭建企业级 Web 服务(Tomcat)
  • Java Selenium 自动打开浏览器保存截图
  • Spring Cloud系列—Gateway统一服务入口
  • 案例分析2:上层应用不稳定提示注册失败
  • Python(9)-- 异常模块与包
  • CLIP,BLIP,SigLIP技术详解【二】
  • Flink + Hologres构建实时数仓