GMS之Launcher中去除默认Search或替换为Chrome Search

将Launcher中搜索框去除

将FeatureFlags.java文件中的QSB_ON_FIRST_SCREEN变量修改为false

java 复制代码
\system\vendor\mediatek\proprietary\packages\apps\Launcher3\src\com\android\launcher3\config\FeatureFlags.java

/**
 * Defines a set of flags used to control various launcher behaviors.
 *
 * <p>All the flags should be defined here with appropriate default values.
 */
public final class FeatureFlags {
    /**
     * Enable moving the QSB on the 0th screen of the workspace. This is not a configuration feature
     * and should be modified at a project level.
     */
   public static final boolean QSB_ON_FIRST_SCREEN = BuildConfig.QSB_ON_FIRST_SCREEN;
   

在源码中是通过launcher3中的BuildConfig.java去获取变量(默认true),那么在这里将变量修改为false即可(自行添加系统变量进行灵活控制也行)

java 复制代码
\system\vendor\mediatek\proprietary\packages\apps\Launcher3\src_build_config\com\android\launcher3\BuildConfig.java

public final class BuildConfig {
    public static final String APPLICATION_ID = "com.android.launcher3";
    public static final boolean DEBUG = false;
    /**
     * Flag to state if the QSB is on the first screen and placed on the top,
     * this can be overwritten in other launchers with a different value, if needed.
     */
    public static final boolean QSB_ON_FIRST_SCREEN = false;
}

最近在Android 13平台修改以上代码后,在Launcher中并不生效,后来发现,如果SearchLauncherQuickStep存在会默认使用,那么我们的修改就不会生效,因此在这里也需要把它注释掉

java 复制代码
system\vendor\partner_gms\products\gms.mk

GMS_PRODUCT_PACKAGES += \
    #SearchLauncherQuickStep

String providerPkg 为 Chrome 浏览器应用的包名

String className 为 launcher中Chrome Search组件的名字

Boolean ruSupport 为了判断当前版本是否为RU版本(一般只有RU地区才需要这样替换Search)

在getSearchWidgetProviderInfo方法中进行修改判断

java 复制代码
system\vendor\mediatek\proprietary\packages\apps\Launcher3\src\com\android\launcher3\qsb\QsbContainerView.java

     /**
     * returns it's AppWidgetProviderInfo using package name from getSearchWidgetPackageName
     * @param context
     * @return AppWidgetProviderInfo
     */
    @Nullable
    public static AppWidgetProviderInfo getSearchWidgetProviderInfo(@NonNull Context context) {
        String providerPkg = getSearchWidgetPackageName(context);
        if (providerPkg == null) {
            return null;
        }

        //add ---------------------------------------------------------
        String  providerPkg = "com.android.chrome";
        String className = "org.chromium.chrome.browser.searchwidget.SearchWidgetProvider";
        Boolean ruSupport = SystemProperties.get("ro.product.name");
        //end ---------------------------------------------------------
        

        AppWidgetProviderInfo defaultWidgetForSearchPackage = null;
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
        for (AppWidgetProviderInfo info :
                appWidgetManager.getInstalledProvidersForPackage(providerPkg, null)) {
            if (info.provider.getPackageName().equals(providerPkg) && info.configure == null) {
                if ((info.widgetCategory
                        & AppWidgetProviderInfo.WIDGET_CATEGORY_SEARCHBOX) != 0) {
                             //add ---------------------------------------------------------
                            if(ruSupport){
                                if(className.equals(info.provider.getClassName())){
                                    return info;
                                }
                            }else{
                                return info;
                            }
                            //end ---------------------------------------------------------
                } else if (defaultWidgetForSearchPackage == null) {
                    defaultWidgetForSearchPackage = info;
                }
            }
        }
        return defaultWidgetForSearchPackage;
    }

人的精神思想方面的优势越大,给无聊留下的空间就越小。

相关推荐
qq_5470261792 小时前
Flowable 工作流引擎
java·服务器·前端
鼓掌MVP3 小时前
Java框架的发展历程体现了软件工程思想的持续进化
java·spring·架构
编程爱好者熊浪3 小时前
两次连接池泄露的BUG
java·数据库
lllsure3 小时前
【Spring Cloud】Spring Cloud Config
java·spring·spring cloud
鬼火儿4 小时前
SpringBoot】Spring Boot 项目的打包配置
java·后端
NON-JUDGMENTAL4 小时前
Tomcat 新手避坑指南:环境配置 + 启动问题 + 乱码解决全流程
java·tomcat
chxii4 小时前
Maven 详解(上)
java·maven
李少兄4 小时前
IntelliJ IDEA 远程调试(Remote Debugging)教程
java·ide·intellij-idea
Kuo-Teng4 小时前
Leetcode438. 找到字符串中所有字母异位词
java·算法·leetcode
毕设小屋vx ylw2824265 小时前
Java开发、Java Web应用、前端技术及Vue项目
java·前端·vue.js