android6.0设置默认Luncher方式

xiaoxiao2021-02-28  62

1.设置默认Launcher,但不是唯一的,可以在设置里面去切换的方法。

frameworks\base\services\core\java\com\android\server\am\ActivityManagerService.java中的startHomeActivityLocked方法里面添加如下代码。

    boolean startHomeActivityLocked(int userId, String reason) {         if (mFactoryTest == FactoryTest.FACTORY_TEST_LOW_LEVEL                 && mTopAction == null) {             // We are running in factory test mode, but unable to find             // the factory test app, so just sit around displaying the             // error message and don't try to start anything.             return false;         }

/**   * yf add   * set default launcher   */   ComponentName DefaultLauncher=new   ComponentName("com.yougfeel.mywy","com.yougfeel.mywy.MainActivity"); //此处设置默认Launcher的包类名   //Slog.d(TAG,"set default launcher");   final PackageManager mPm = mContext.getPackageManager();   ArrayList<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>();   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);   //Slog.d(TAG,"homeActivities"+candidate);   final ActivityInfo info = candidate.activityInfo;   ComponentName activityName = new ComponentName(info.packageName, info.name);   mHomeComponentSet[i] = activityName;   }   IntentFilter mHomeFilter = new IntentFilter(Intent.ACTION_MAIN);   mHomeFilter.addCategory(Intent.CATEGORY_HOME);   mHomeFilter.addCategory(Intent.CATEGORY_DEFAULT);   List<ComponentName>Activities=new ArrayList();   mPm.replacePreferredActivity(mHomeFilter, IntentFilter.MATCH_CATEGORY_EMPTY,mHomeComponentSet, DefaultLauncher);   /**   * set default launcher end   */

2.设置默认唯一的Launcher,在不去掉其他Launcher的情况下。

+++ b/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java @@ -4238,6 +4238,15 @@ public class PackageManagerService extends IPackageManager.Stub {              if (N == 1) {                  return query.get(0);              } else if (N > 1) { +                                       for(int i = 0; i < N; i++){ +                                               ResolveInfo ri = query.get(i); +                                               String default_Launcher = SystemProperties.get("ro.yf.default_Launcher", "none"); +                                               if(default_Launcher.isEmpty() || default_Launcher.equals("none")){ +                                                       break; +                                               }else if(ri.activityInfo.packageName.equals(default_Launcher)) { +                                                       return ri; +                                               } +                                       }                  final boolean debug = ((intent.getFlags() & Intent.FLAG_DEBUG_LOG_RESOLUTION) != 0);

转载请注明原文地址: https://www.6miu.com/read-78310.html

最新回复(0)