android6.0设置默认Luncher方式

本文介绍了如何在Android 6.0中设置默认启动器,包括两种方法:1) 添加代码到ActivityManagerService.java,使得系统启动时默认使用指定的启动器应用;2) 修改PackageManagerService.java,通过系统属性判断并设置默认启动器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值