MTK P默认设置第三方应用为主桌面

概述

大部分的系统定制都会有设置客户launcher为系统桌面的需求,在此做个修改记录

添加客户APP

1.创建.\vendor\mediatek\proprietary\packages\apps\custom_Launcher目录
2.把custom_Launcher.apk放入custom_Launcher目录
3.新建Android.mk 名称必须保持一致

 LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := custom_Launcher
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_PRIVILEGED_MODULE := true
include $(BUILD_PREBUILT)

4.\device\mediatek\common\device.mk 末尾添加
PRODUCT_PACKAGES += custom_Launcher

默认launcher设置

1.获取apk的包名类名
packageName :com.xxx.package
className :com.xxx.package.LauncherName
2.frameworks\base\services\core\java\com\android\server\am\ActivityManagerService.java
startHomeActivityLocked中添加如下:

final PackageManager mPm = mContext.getPackageManager();

        Intent homeIntent=new Intent();

        homeIntent.addCategory(Intent.CATEGORY_HOME);

        homeIntent.setAction(Intent.ACTION_MAIN);
        homeIntent.addCategory(Intent.CATEGORY_DEFAULT);
        ResolveInfo info = mPm.resolveActivity(homeIntent, PackageManager.MATCH_DEFAULT_ONLY);
        if("android".equals(info.activityInfo.packageName)){

            ComponentName DefaultLauncher=new ComponentName( packageName, className ); // need modify
            ArrayList homeActivities = new ArrayList();
            ComponentName currentDefaultHome = mPm.getHomeActivities(homeActivities);

            ComponentName[]mHomeComponentSet = new ComponentName[homeActivities.size()];
            for (int i = 0; i < homeActivities.size(); i++) {
                final ResolveInfo candidate = homeActivities.get(i);
                Log.d(TAG,"homeActivitie: candidate = "+candidate);
                final ActivityInfo activityInfo= candidate.activityInfo;
                ComponentName activityName = new ComponentName(activityInfo.packageName, activityInfo.name);
                mHomeComponentSet[i] = activityName;
            }
            IntentFilter mHomeFilter = new IntentFilter(Intent.ACTION_MAIN);
            mHomeFilter.addCategory(Intent.CATEGORY_HOME);
            mHomeFilter.addCategory(Intent.CATEGORY_DEFAULT);
            ListActivities=new ArrayList();
            mPm.replacePreferredActivity(mHomeFilter, IntentFilter.MATCH_CATEGORY_EMPTY,mHomeComponentSet, DefaultLauncher);
        }

移除了launcher3的修改需要添加以下:更改recent的包名类名

\frameworks\base\core\res\res\values\config.xml


    com.android.launcher3/com.android.quickstep.RecentsActivity

2021年8月19日早上12点
谢谢!

你可能感兴趣的:(MTK P默认设置第三方应用为主桌面)