设置default Launcher

本文介绍了一种在Android系统中设置默认Launcher的方法。通过修改packages.xml文件,在PackageManagerService启动时自动设置首选Launcher。此方法适用于拥有多个Launcher的应用场景。

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

系统有多个Launcher时,会在packages.xml 设置如下信息:
/data/system/packages.xml
<preferred-activities>
<item name="com.android.ulauncher/.Launcher" match="100000" set="2">
<set name="com.android.launcher/com.android.launcher2.Launcher" />
<set name="com.android.ulauncher/.Launcher" />
<filter>
<action name="android.intent.action.MAIN" />
<cat name="android.intent.category.HOME" />
<cat name="android.intent.category.DEFAULT" />
</filter>
</item>
</preferred-activities>

如何在启动时自动设置default Launcher呢?

在PackageManagerService构造函数中,会读取packages.xml文件:mRestoredSettings = mSettings.readLPw();
所以在之前添加设置:
readPermissions();
            
String firstBoot = SystemProperties.get("persist.sys.preactivity"); 
if ("0".equals(firstBoot)) {
    addPreferredActivityForULauncher();
}
SystemProperties.set("persist.sys.preactivity", "1");

mRestoredSettings = mSettings.readLPw();


private void addPreferredActivityForULauncher() {
    IntentFilter filter = new IntentFilter();
    filter.addAction("android.intent.action.MAIN");
    filter.addCategory("android.intent.category.HOME"); 
    filter.addCategory("android.intent.category.DEFAULT");
    ComponentName preActivity = new ComponentName("com.android.ulauncher", "com.android.ulauncher.Launcher"); 
    ComponentName[] set = new ComponentName[] {new ComponentName("com.android.launcher", "com.android.launcher2.Launcher"), preActivity}; 
    mSettings.mPreferredActivities.addFilter(
            new PreferredActivity(filter, IntentFilter.MATCH_CATEGORY_EMPTY, set, preActivity));
    scheduleWriteSettingsLocked();

}

别的应用程序也可以类似这样来设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值