1

2 つのランチャー アイコンと 2 つの異なるアクティビティを備えたアプリがあります。マニフェスト ファイルは次のようになります。

....
    <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は、2 つの個別のランチャー アイコンを表示します (1 はMyActivity、1 はMySettings)。

問題:を開くMyActivityと、MySettings画面も開いてしまいます。各ランチャー アイコンで、対応するアクティビティのみを開きます。問題を解決するために各アクティビティに使用taskAffinityしましたが、機能しませんでした。動作させるには、私の場合はできないtaskAffinityフラグでアクティビティを開始する必要があると思います(両方ともアクティビティを起動します)。Intent.FLAG_ACTIVITY_NEW_TASK

私も使用しようとしましandroid:launchMode="singleTask"たが、どちらも機能しませんでした。

各ランチャー アイコンを作成してその Activity のみを開くにはどうすればよいですか?

更新:申し訳ありませんが、MyActivity開いていないことに気付きMySettingsました。MyActivityには UI がなかったため、 のような空白の画面が表示されましたMySettingstaskAffinity正しく動作します。UIを非表示にするために追加android:theme="@android:style/Theme.NoDisplay"しました。MyActivity

4

2 に答える 2

1

アプリを起動するには、2 つの異なる画像を使用するだけです。

<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>
于 2015-07-10T13:18:09.517 に答える
0

私はそのように解決しました:

<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 は使用しませんでしたが、Activity クラスの完全に指定された名前を示しました (2 つの異なるイメージを使用する以外)。

于 2015-07-10T13:27:24.787 に答える