gpt4 book ai didi

android - 如何在产品 flavor 中使用不同的启动器 Activity ?

转载 作者:IT老高 更新时间:2023-10-28 23:05:28 26 4
gpt4 key购买 nike

我正在做一个 Android 库项目,在默认的 src/main/AndroidManifest.xml 中,MainActivity 是启动器 Activity 。

为了别的,我创造了产品 flavor 。是的,如果我想在不同的产品口味中触发/显示不同的 Activity ,它非常有效。但是,我想保留 src/main/ 文件夹中的 默认启动器 Activity ,同时将另一个 flavor Activity 注册为新的启动器 Activity 。这样对于不同的产品风格,我可以有不同的启动器 Activity ,并且我仍然可以从它们开始在 src/main/中的原始“启动器” Activity 。

谁能告诉我如何做到这一点?非常感谢。

注意事项:

  1. 添加 if (BuildConfig.FLAVOR.equals("flavorName"))不喜欢原始启动器 Activity 的代码。因为我不想修改别人的生产代码(这是一个库项目)。

  2. 我试过 manifestmergertools:replace , 但似乎不适用于 intent-filter (我注意到 Intent 过滤器的元素合并策略总是)。

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

如果这可行,请您指导我如何使其工作?谢谢。

最佳答案

我尝试过的:

  1. 启用 Manifest Merger,这不起作用;
  2. 使用 activity-alias,这也不起作用。

最后我发现只要加一行就可以解决问题:

<category android:name="android.intent.category.DEFAULT" />

================================================ ===

为了清楚起见,我将再次讨论问题和解决方案:

src/main/java下有一个MainActivity,对应的src/main/AndroidManifest.xml中指定MainActivity为启动器 Activity :

<activity android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

这是一个非常简单的部分。现在我们从产品 flavor 部分开始。

由于某种原因,在产品风格中,我不想覆盖 MainActivity,而是有一个 YetAnotherMainActivity。目标是YetAnotherMainActivity 设置为产品风格中的新启动器 Activity ,并且它应该仍然能够调用 MainActivity。 p>

在这里,您可以如何将产品风格中的新 Activity 设置为新的启动器 Activity :

flavorX/AndroidManifest.xml:

<activity android:name="com.example.YetAnotherMainActivity"
android:label="@string/title_yet_another_main_activity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

是的,事实证明这非常容易。只需添加 android.intent.category.DEFAULT.

关于android - 如何在产品 flavor 中使用不同的启动器 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320585/

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