在安卓launcher中强制修改app展示的名字

本文介绍了一种在Android系统中动态修改Launcher应用显示名称的方法,通过修改BubbleTextView.java文件实现根据不同设备型号显示不同名称的功能。

某些时候可能需要让同一个app在不同的设备上显示不同的名字,除了动态修改app图标和名称的方法外(Android动态修改应用图标和名称 - 掘金),还可以在launcher中直接修改桌面展示的名字(其它位置的名字没改)

修改:

packages/apps/Launcher3/src/com/android/launcher3/BubbleTextView.java

import android.os.SystemProperties;


private void applyIconAndLabel(Bitmap icon, ItemInfo info) {
        FastBitmapDrawable iconDrawable = mLauncher.createIconDrawable(icon);
        if (info.isDisabled()) {
            iconDrawable.setState(FastBitmapDrawable.State.DISABLED);
        }

        setIcon(iconDrawable);

        //start
        if (info.title.equals("origin_name")) {
            String name = "";

            name = SystemProperties.get("ro.product.name");

            if (name.equals("a")) {
                setText("product_a");
            } else {
                setText(info.title);
            }
        } else {
            setText(info.title);
        }
        //end

        if (info.contentDescription != null) {
            setContentDescription(info.isDisabled()
                    ? getContext().getString(R.string.disabled_app_label, info.contentDescription)
                    : info.contentDescription);
        }
    }

<think>我们正在讨论如何修改Android源码(特别是Launcher3)来隐藏特定应用程序的图标。根据引用[3],我们知道可以通过修改系统源码来控制应用程序在Launcher中的显示。虽然引用[3]讲的是添加Launcher属性,但隐藏图标也是类似的原理,我们可以通过修改Launcher3的源码来实现。步骤:1.获取Launcher3的源代码。根据引用[4],我们可以从指定仓库获取(注意:引用[4]提到该项目已不再维护,但我们可以参考其代码结构)。2.在Launcher3中,应用程序图标的显示是由PackageManager返回的应用程序列表决定的。我们可以通过修改Launcher3中加载应用程序列表的代码,过滤掉我们想要隐藏的应用程序。具体修改思路:在Launcher3中,有一个类负责加载应用程序列表,通常是在`src/com/android/launcher3/LauncherModel.java`或类似位置(不同版本可能不同)。我们需要在加载应用程序列表后,根据包名过滤掉特定的应用。例如,假设我们要隐藏包名为“com.example.hiddenapp”的应用,我们可以这样做:在加载应用列表的地方(可能是`LauncherModel`的`loadAllApps`方法或类似方法)添加过滤条件。伪代码示例:```//在加载应用列表后,创建一个新的列表,排除我们想要隐藏的应用List<AppInfo>allApps=...//从PackageManager获取的应用列表List<AppInfo>filteredApps=newArrayList<>();for(AppInfoapp:allApps){if(!"com.example.hiddenapp".equals(app.componentName.getPackageName())){filteredApps.add(app);}}//然后用filteredApps替换原来的allApps```3.修改后,重新编译Launcher3并刷入设备。注意事项:-由于不同版本的Android系统,Launcher3的代码结构可能不同,需要根据具体版本调整。-隐藏应用可能需要考虑系统权限,确保修改不会导致其他问题。另外,引用[1]和[2]虽然讲的是修改图标和禁用左右滑动,但修改源码的方法论是类似的:定位到相关代码,进行修改,然后重新编译。根据引用[3]的思路,我们还可以考虑在系统层面修改(例如在PackageManagerService中做过滤),但那样影响范围更大。在Launcher3修改更直接。相关问题:§§相关问题§§1.如何获取Android系统的Launcher3源代码?2.修改Launcher3后如何编译并刷入设备?3.除了修改Launcher3源码,还有其他方法可以隐藏应用图标吗?4.如何通过修改系统设置或使用root权限来隐藏应用图标?</think>### 在Launcher3中隐藏特定应用图标的方法 要在Android源码中修改Launcher3以隐藏特定应用程序图标,需遵循以下步骤: #### 核心修改步骤 1. **定位应用过滤逻辑** 在Launcher3源码中,应用图标加载逻辑位于`LauncherModel.java`的`loadAllApps()`方法中。需在此处添加应用过滤条件: ```java // 在loadAllApps方法中添加过滤 List<AppInfo> allApps = ... // 原始应用列表 List<AppInfo> filteredApps = new ArrayList<>(); for (AppInfo app : allApps) { if (!shouldHideApp(app.componentName.getPackageName())) { filteredApps.add(app); } } ``` 2. **实现隐藏判断函数** 创建`shouldHideApp()`方法检测目标应用(示例隐藏包名为`com.example.hiddenapp`): ```java private boolean shouldHideApp(String packageName) { // 定义需隐藏的应用包名列表 Set<String> hiddenApps = new HashSet<>(Arrays.asList( "com.example.hiddenapp", "com.another.hiddenapp" )); return hiddenApps.contains(packageName); } ``` 3. **修改应用数据模型** 在`AllAppsList.java`中更新`add()`方法,在添加应用前检查: ```java public void add(AppInfo info) { if (!shouldHideApp(info.componentName.getPackageName())) { mApps.add(info); } } ``` #### 编译与部署 1. 将修改后的Launcher3编译进系统镜像 ```bash mmm packages/apps/Launcher3/ make snod ``` 2. 刷入修改后的系统镜像 3. 重启后执行强制刷新: ```bash adb shell am force-stop com.android.launcher3 ``` #### 注意事项 1. **签名验证** 需使用与设备匹配的签名密钥编译,否则可能无法安装[^4] 2. **多用户支持** 若需支持多用户,应在`shouldHideApp()`中添加用户ID判断 3. **动态更新** 可通过创建系统级配置接口实现动态管理隐藏列表: ```java // 读取系统设置中的隐藏列表 hiddenApps = Settings.Secure.getString( context.getContentResolver(), "hidden_app_list" ).split(","); ``` > **替代方案建议**: > 若非必须修改源码,可考虑: > - 使用`pm disable-user com.example.hiddenapp`禁用应用(需root) > - 第三方启动器提供的隐藏功能 > - 自定义ContentProvider动态过滤应用列表[^3] ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值