首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有两个启动器图标的Android应用程序,带有单独的taskAffinity

带有两个启动器图标的Android应用程序,带有单独的taskAffinity
EN

Stack Overflow用户
提问于 2015-07-10 13:07:17
回答 2查看 276关注 0票数 1

我有两个启动图标和两个不同的活动应用程序。清单文件如下所示:

代码语言:javascript
复制
....
    <activity
        android:name=".MyActivity"
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher"
        android:taskAffinity="my.package.com.MyActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.LAUNCHER" /> 
        </intent-filter>
    </activity>

    <activity
        android:name=".MySettings"
        android:label="@string/settings"
        android:icon="@mipmap/ic_launcher"
        android:taskAffinity="my.package.com.MySettings">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
....

我希望MyActivity是安装后打开的默认屏幕,所以我使用了.category.DEFAULT

action.MAINcategory.LAUNCHER将显示两个独立的启动图标(一个用于MyActivity,一个用于MySettings)。

问题:打开MyActivity时,MySettings屏幕也被打开。我希望每个启动图标只打开其相应的活动。对于每一项活动,我都使用了taskAffinity来解决问题,但它没有起作用。我认为要使taskAffinity发挥作用,必须使用标志Intent.FLAG_ACTIVITY_NEW_TASK来启动活动,而在我的情况下,这是不能使用的(两者都是启动活动)。

我也尝试过使用android:launchMode="singleTask",但它也不起作用。

如何使每个发射器图标只打开其活动?

更新:对不起,我意识到MyActivity没有打开MySettings,尽管如此。MyActivity没有UI,所以它显示了类似于MySettings的空白屏幕。taskAffinity工作正常。我将android:theme="@android:style/Theme.NoDisplay"添加到MyActivity中以隐藏UI。

EN

回答 2

Stack Overflow用户

发布于 2015-07-10 13:18:09

只需使用两张不同的图片即可启动应用程序。

代码语言:javascript
复制
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <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>
    <activity
        android:name=".MySettings"
        android:label="settings"
        android:icon="@drawable/ic_launcher2"
        android:taskAffinity="my.package.com.MySettings">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
票数 1
EN

Stack Overflow用户

发布于 2015-07-10 13:27:24

我解决了这个问题:

代码语言:javascript
复制
<activity
   android:name="andynaz.android.hyperfcalc.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>

<activity
   android:name="andynaz.android.hyperfcalc.MainActivity2"
   android:label="@string/app_name"
   android:icon="@mipmap/ic_launcher2">
   <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

我没有使用taskAffinity,但是我指定了活动类的完全指定的名称(除了使用两个不同的图像)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31341584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档