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

标签 android android-intent android-manifest android-productflavors

我正在做一个 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/

相关文章:

android - 适用于 Android 应用的 Google Analytics(分析)使用指南

java - 具有两个不同扫描仪和两个不同 BufferedReader 的相同 TCP 套接字(客户端)

android - 将HERE sdk集成到android应用程序中

Android:使用 MediaRecorder 录制音频 - 文件无法播放

android - 找不到处理 Intent 的 Activity,Android

android - 应用程序在使用服务 android 时关闭时崩溃,因为我正在尝试使用 Intent

java - list 合并失败 : android:exported needs to be explicitly specified for <activity>

android - 动态 AndroidManifest.xml

android - 外部分配对于这个过程来说太大了,错误膨胀类,位图大小超过 VM 预算

android - 如何通过导航 Intent 将多个航路点传递到 android 中的标准谷歌地图应用程序?