MTK 放大桌面图标大小

通过alps/packages/apps/Launcher3/src/com/android/launcher3/InvariantDeviceProfile.java中的

public GridOption(Context context, AttributeSet attrs);方法得知launcher3加载了device_profiles.xml来设置桌面布局,可以设备桌面icons的行列排布,和修改大小

修改alps/packages/apps/Launcher3/res/xml/device_profiles.xml这个文件里的 launcher:iconImageSize="72"的值就可以。

<think> 我们正在处理一个关于在MTK桌面隐藏应用图标的技术问题。根据用户提供的引用内容,我们可以总结出两种方法:一种是通过修改系统属性来控制Settings和Launcher的隐藏逻辑(引用1),另一种是直接修改Launcher3的源码,在加载应用时过滤特定应用(引用2)。用户明确询问的是MTK桌面隐藏应用图标的方法,因此我们将重点放在Launcher的修改上。 根据引用2,在Android 7.0上,我们可以修改LauncherModel.java文件,在加载所有应用的地方添加过滤条件。具体步骤是: 1. 在加载应用列表的循环中,判断当前项目是否为特定子项目(通过系统属性ro.build.product来判断)。 2. 对于特定子项目,再通过一个自定义的函数appNeedHideInLauncher来判断当前应用包名是否需要隐藏。 3. 如果需要隐藏,则不将该应用添加到应用列表中。 注意:引用2中的代码示例有两处添加AppInfo的地方,其中第二个是原始代码,第一个是修改后的(在条件判断内)。但示例代码中在条件判断外还有一个添加操作,这可能是错误的。正确的做法应该是只添加不需要隐藏的应用。 因此,我们修改的代码逻辑应该是: if (是特定子项目) { 如果当前应用包名不需要隐藏,则添加到应用列表 } else { 原始添加逻辑(即都添加) } 或者,我们可以统一使用过滤条件,即无论是不是特定子项目,都根据一个统一的过滤条件来决定是否隐藏。但根据引用2,他们是通过系统属性来区分子项目的。 用户的需求是隐藏特定应用图标,我们可以采用包名过滤的方式。下面我们将给出一个更通用的修改方法,不限于特定子项目,而是通过一个需要隐藏的应用包名列表来过滤。 步骤: 1. 在LauncherModel.java中找到加载所有应用的地方(通常是LoaderTask的loadAllApps方法)。 2. 在循环中,获取每个应用的包名。 3. 检查该包名是否在需要隐藏的包名列表中,如果在则跳过,否则添加到应用列表。 我们可以这样修改(示例代码): 先定义一个需要隐藏的应用包名列表(可以硬编码,也可以从配置文件中读取,或者通过系统属性设置)。这里我们使用硬编码方式简单示例。 在循环开始之前定义一个数组: String[] hideApps = {"com.example.app1", "com.example.app2"}; 然后在循环中: for (...) { ... String packageName = app.getComponentName().getPackageName(); if (Arrays.asList(hideApps).contains(packageName)) { continue; // 跳过这个应用,不添加到列表 } // 否则正常添加 mBgAllAppsList.add(...); } 但是,引用2中使用了系统属性来判断是否特定项目,这说明可能有不同的项目需求。我们可以结合系统属性来动态决定是否隐藏,以及隐藏哪些应用。 更灵活的方式是:通过系统属性来设置需要隐藏的应用包名列表(例如,用逗号分隔的字符串),然后在代码中读取这个系统属性并分割成数组,再判断当前应用包名是否在数组中。 例如: String hidePackages = SystemProperties.get("ro.launcher.hide.apps", ""); List<String> hideList = Arrays.asList(hidePackages.split(",")); 然后在循环中: if (hideList.contains(packageName)) { continue; } 这样,我们只需要在设备启动时设置系统属性ro.launcher.hide.apps为需要隐藏的应用包名(多个用逗号隔开),就可以实现动态隐藏。 注意:系统属性可能需要在编译时设置,或者在运行时设置(但需要权限)。对于预装应用,通常在编译时设置系统属性。 另外,由于Launcher3的代码可能因版本而异,以上代码修改的位置和方式可能需要调整。例如,在较新的Launcher版本中,可能是在其他方法中加载应用。 因此,我们给出一个通用的修改思路,具体实现需要根据Launcher的版本调整。 总结MTK桌面隐藏应用图标的方法: 1. 修改Launcher源码,在加载所有应用列表的地方(通常是LauncherModel.java)添加过滤逻辑。 2. 定义一个系统属性(如ro.launcher.hide.apps)来配置需要隐藏的应用包名列表(逗号分隔)。 3. 在加载每个应用时,判断其包名是否在隐藏列表中,如果是则跳过,不添加到应用列表。 4. 编译并烧写修改后的Launcher应用。 注意:这种方法适用于预装应用的隐藏,因为系统属性在编译时设置。如果需要在运行时动态隐藏,可能需要其他机制(如数据库或配置文件),并考虑刷新应用列表。 由于用户引用的是Android7.0和Android12的修改,说明该方法在不同版本都有应用,但具体代码位置可能不同。在Android12中,Launcher可能已经重构,但原理类似。 最后,我们生成相关问题。 </think>在MTK设备上隐藏桌面应用图标,主要通过修改Launcher源码实现。以下是两种常用方法,适用于不同Android版本: ### 方法1:通过系统属性控制隐藏 (推荐) ```java // 文件路径:packages/apps/Launcher3/src/com/android/launcher3/LauncherModel.java // 在LoaderTask.loadAllApps()方法中修改: for (LauncherActivityInfoCompat app : apps) { String packageName = app.getComponentName().getPackageName(); // 添加过滤逻辑 if (SystemProperties.get("ro.launcher.hide_apps").contains(packageName)) { continue; // 跳过需要隐藏的应用 } mBgAllAppsList.add(new AppInfo(...)); // 添加可见应用 } ``` **实现步骤**: 1. 声明系统属性 在`device/mediatek/<project>/system.prop`中添加: `ro.launcher.hide_apps=com.example.app1,com.example.app2` 2. 修改LauncherModel.java 添加上述过滤逻辑代码 3. 重新编译刷机 `make Launcher3 -j8 && adb push out/target/.../Launcher3.apk /system/priv-app/Launcher3/` ### 方法2:硬编码隐藏特定应用 (Android 7.0) ```java // 同文件位置修改: Set<String> hiddenApps = new HashSet<>(Arrays.asList( "com.mediatek.inputmethod", "com.android.dynsystem" )); for (LauncherActivityInfoCompat app : apps) { if (hiddenApps.contains(app.getComponentName().getPackageName())) { continue; // 隐藏预定义应用 } mBgAllAppsList.add(...); } ``` ### 关键实现要点 1. **隐藏位置**:修改`LauncherModel.java`的`loadAllApps()`方法 2. **过滤时机**:应用加载阶段过滤,非界面层隐藏 3. **系统属性优势**: - 动态配置:`adb shell setprop ro.launcher.hide_apps pkg1,pkg2` - 项目定制:不同项目配置不同属性值 4. **兼容性**: 该方法适用于MTK Android 7.0-12系统,需注意不同版本中: - Android 9+ 使用`LauncherAppsService`替代`LauncherActivityInfoCompat` - Android 12 需修改`AllAppsList.merge()`方法 > **注意事项**: > 1. 修改后需清除Launcher数据:`adb shell pm clear com.android.launcher3` > 2. 系统属性值长度限制为92字符,超长需分段处理 > 3. 隐藏系统应用需同步修改Settings模块[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值