Android 设置默认Launcher

在Android系统中,为了使自己的Launcher成为默认且不允许被替换,需要在Framework层进行修改。具体步骤包括:1) 在Intent.java中添加自定义Filter;2) 在PackageParser.java中实现过滤处理;3) 在Launcher的AndroidManifest.xml中使用定义的Filter;4) 重新编译系统并通过make update-api编译,最终烧录验证。
摘要由CSDN通过智能技术生成

Android 设置默认Launcher(Home)简介:

       如果定制Android系统,想让我们自己的Launcher(Home)成为默系统认Launcher,不希望用户安装了第三Launcher来替换我们的Launcher,并且不希望系统启动后弹出选择Launcher的界面,我们可以通过修改Framework层来实现,实现之后用户安装的第三方Launcher,系统仅当成一个普通应用来对待。

1、定义自己的Filter:

      在frameworks/base/core/java/android/content/Intent.java 中添加一个自己的Filter:

    @SdkConstant(SdkConstantType.INTENT_CATEGORY) 
    public static final String CATEGORY_HOME_FIRST = “android.intent.category.HOME_FIRST”;

 2、通过自己的Filter进行过滤处理:

        在frameworks/base/core/java/android/content/pm/PackageParser.java 中做过滤:

        Android 安装一个APK的时候首先会解析APK,这里要做很多事情,其中一个事情就是解析Manifest.xml文件,并将所有APK的Manifest封装到各种对象中并保存在内存当中解析Manifest的类是非常重要的,PackageParser.java类注意用于解析Manifest.xml文件,在寻找Launcher的时候是根据AndroidManifest.xml中Launcher的filter(在Manifest中定义的<category android:name="android.intent.category.HOME" />)来过滤。然后根据filter出来的HOME来启动,如果只有一个HOME,则启动这个HOME,如果用户自己装了Launcher,那就会弹出来一个列表供用户选择。

private boolean parseIntent(Resources res,
            XmlPullParser parser, AttributeSet attrs, int flags,
            IntentInfo outInfo, String[] outError, boolean isActivity)
            throws XmlPullParserException, IOException {
  
        TypedArray sa = res.obtainAttributes(attrs,
                com.android.internal.R.styleable.AndroidManifestIntentFilter);

        int priority = sa.getInt(
                com.android.internal.R.styleable.AndroidManifestIntentFilter_priority, 0);
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值