两个发射器用于单个活动

sda*_*bet 15 android android-intent android-activity

是否可以使用多个应用程序图标以不同的意图附加功能启动相同的活动?

Dav*_*ser 28

启动活动时(通过启动器)无法提供意图附加功能.

但是,您可以使用<activity-alias>标记来定义将启动相同(目标)活动的其他应用程序图标.

编辑:添加示例:

此示例显示了一个真实的活动调用MyRealActivity和一个名为的别名Blahblah.两者都有意图过滤器,使它们出现在可用应用程序列表中.它们具有不同的标签和不同的图标,因此它们看起来像用户的2个不同的应用程序.但是,他们都开展了相同的活动.请注意,没有java类.Blahblah,它只是一个占位符,必须是唯一的.

    <activity
            android:name=".MyRealActivity"
            android:label="@string/header_application"
            android:icon="@drawable/icon_myapp">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <activity-alias
            android:targetActivity=".MyRealActivity"
            android:name=".Blahblah"
            android:label="@string/header_blahblah"
            android:icon="@drawable/icon_blahblah">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity-alias>
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,您可以从通过PackageManager检索到的ActivityInfo轻松判断您的应用程序是从别名还是原始活动启动的.我这样做是通过查看活动标签并根据它启动不同状态的主要活动. (6认同)
  • @stdout 它在`&lt;activity-alias&gt;`标记中被忽略,因此使用目标(原始)`&lt;activity&gt;`的`launchMode`。 (2认同)