我正在做一个 Android 库项目,在默认的 src/main/AndroidManifest.xml 中,MainActivity 是启动器 Activity 。
为了别的,我创造了产品 flavor 。是的,如果我想在不同的产品口味中触发/显示不同的 Activity ,它非常有效。但是,我想保留 src/main/ 文件夹中的 默认启动器 Activity ,同时将另一个 flavor Activity 注册为新的启动器 Activity 。这样对于不同的产品风格,我可以有不同的启动器 Activity ,并且我仍然可以从它们开始在 src/main/中的原始“启动器” Activity 。
谁能告诉我如何做到这一点?非常感谢。
注意事项:
添加
if (BuildConfig.FLAVOR.equals("flavorName"))
不喜欢原始启动器 Activity 的代码。因为我不想修改别人的生产代码(这是一个库项目)。我试过
manifestmerger
和tools:replace
, 但似乎不适用于intent-filter
(我注意到 Intent 过滤器的元素合并策略总是)。
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
如果这可行,请您指导我如何使其工作?谢谢。
最佳答案
我尝试过的:
- 启用 Manifest Merger,这不起作用;
- 使用 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/