gpt4 book ai didi

android - 在 AOSP 上设置默认应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:36 42 4
gpt4 key购买 nike

问题

如果有两个相同类别的应用程序,我可以在构建中设置默认应用程序吗?安装了吗?

示例

我在 AOSP 上添加自定义浏览器。我想在构建开始之前将其设置为默认浏览器。

在包的 Android.mk 文件中,有一个选项可以指定 'LOCAL_OVERRIDES_PACKAGES',这基本上会覆盖提到的包的安装,使我的应用成为默认应用。

但我希望其他应用成为 ROM 的一部分,而我的应用作为默认应用。

任何想法将不胜感激。

最佳答案

所以我找到了一个在构建时将应用程序设置为默认应用程序的解决方案。我正在记录它,希望它能帮助其他人。

  1. Android 系统在位于 /data/system/users/{*user-id*}/package-restrictions.xml 的文件中的 block 中保留默认应用程序/Activity 的列表。称为 <preferred-activities></preferred-activities>

  2. 此文件由 Settings.java 和 PackageManager.java 在构建时生成。每当 android 系统上的默认值发生变化时,此 xml block 上的标志也会相应地发生变化。

  3. 在构建时,系统从一个附加位置(即/system/etc/preferred-activities/*.xml)读取一组首选 Activity 。
  4. 为了添加我们想要的首选/默认 Activity ,我们创建了一个 xml 文件并将其放在/system/etc/preferred-activities/中,然后由 android 系统读取并将首选 Activity 列表添加到列表中在 package-restrictions.xml 中

示例

向 AOSP 添加自定义浏览器

  • 如果其他设备上只安装了默认浏览器应该创建“mybrowser”以下 xml 文件。在这个案例,我将其命名为 preferred-activies-home.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <preferred-activities>
    <item name="com.mybrowser.MainActivity" match="200000" always="true" set="2">
    <set name="com.mybrowser./.MainActivity" />
    <set name="com.android.browser/.BrowserActivity" />
    <filter>
    <action name="android.intent.action.VIEW" />
    <cat name="android.intent.category.DEFAULT" />
    <scheme name="http" />
    </filter>
    </item>
    </preferred-activities>
  • 复制以上xml到/system/etc/preferred-apps/通过在 <!--AOSP_SOURCE-->/build/target/product/full_base.mk 中添加以下行来定位

    PRODUCT_COPY_FILES +=/<location-of-file>/preferred-activities-home.xml:system/etc/preferred-apps/preferred-activities-home.xml
  • 构建后,浏览器 Activity 将设置为默认值

限制和注意事项

上述过程有一些限制。它们如下:

  • 在构建时,我们需要知道所有的主要 Activity 解决特定 Intent 过滤器的应用程序。
  • 上述过程在首次启动时对 Launcher 起作用。假定 ResolverActivity 不考虑启动时的包限制。

关于android - 在 AOSP 上设置默认应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34073290/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com