2012-01-19 4 views
34

私は2つの活動は、インテントフィルタが付いている二ランチャー活動

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.package" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="7" /> 

<application 
    android:name=".MyApp" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 

    <!-- work order activity --> 
    <activity 
     android:name=".app.WorkOrderActivity" 
     android:label="@string/work_order" 
     android:taskAffinity="com.package.task_for_work_order_activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <!-- inventory activity --> 
    <activity 
     android:name=".app.InventoryActivity" 
     android:label="@string/inventory" 
     android:taskAffinity="com.package.task_for_inventory_activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

問題は、私はAPKファイルをインストールしていたとき、私はシステムを理解できるように、ので、示さアクティビティがないということであり、どのアクティビティーを表示するかを指定することはできません。

ランチャーには2つのアクティビティが表示されていますので、2番目のアクティビティからインテントフィルタを削除する方法や、ランチャに2つのアイコンを表示する方法を教えてください。

+0

は、詳細を喜ば知らせますそれが必要? – Natali

+1

私は2つの完全に分離されたuiモジュールを持っているので、私はそれらを別々のアクティビティに保ち、両方をアンドロイドダッシュボードからアクセスできるようにします。 – Orest

+0

最新のAndroidバージョンでは、上記のコードは正常に動作します。アンドロイドマニフェストで宣言された最初のアクティビティが優先され、ユーザーに表示されます。 – bschandramohan

答えて

65

の答えを参照してください:

<category android:name="android.intent.category.DEFAULT"/> 

デフォルトの活動でこれを挿入し、残りを保ちます。そうすればうまくいくはずです。

あなたはまた、android:icon="@drawable/myothericon"

+0

AHこれは私が探していたものですが、見つけられませんでした。これは正解です。 –

+0

年、これは私にとって使いやすいです。 – wangzhengyi

2

私はこれが私のために働いていた、それが原因で「android.intent.action.MAIN」アクションのだと思う:

<application> 
    <activity android:name=".MyActivityA" android:icon="@drawable/aicon" android:label="@string/app_name"> 
     <intent-filter> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".MyActivityB" android:icon="@drawable/bicon" android:label="@string/app_name"> 
     <intent-filter> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
+2

私はそれを試みましたが、その場合は2番目の活動は私のランチャーには表示されません..私はそれの解決策を見つけることができません..アンドロイド2.1の問題かもしれません – Orest

+0

私は2番目のMAINアクションを削除し、エミュレータ2.3.3と使用しない – Orest

+0

ええ、あなたの質問にあなたの全体のマニフェストを投稿できますか? – Reno

1

は、タスクの親和性プロパティを使用して、複数のスタートアップ活性を有することが可能であるようです。あなたの意思-フィルタに次の行を追加することで、デフォルト一つであるアクティビティを指定する必要がありhttps://stackoverflow.com/a/3270422/819904

+0

基本的には「他の場所に」ある回答を投稿しないでください...リンクが削除されたり変更されたりする可能性があります。そのような場合でも、あなたはこのような他のユーザーを表示しているようです。 ...「....」となると、循環ロジックが動作するようになります。なぜなら、循環ロジックは 'goTo(charAt(0)' " – Bonatti

+0

のために動作するからです。" [リンクのコンテキストを提供する]外部リソースへのリンクが推奨されていますが、リンクの周りにコンテキストを追加して、仲間のユーザーには、それが何であるか、なぜそこにあるのかを知ることができます。 – Bonatti

+0

私はちょうど質問に答えるようにお願いしています。答えを出すだけで、誰にでもリダイレクトすることはありません( "内部"のstackoverflowドメインでさえ)同様に、その質問の所有者は「del私はあなたに答えている方法を改善し、他人を助ける方法で改善することです。 – Bonatti

1

は両方のインテントフィルタに定義されたandroid:name属性を持つ<action>アイテムの追加属性を使用して第二のアクティビティに別のアイコンを追加したい場合があります。なぜ

<application 
    android:name=".MyApp" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 

    <!-- work order activity --> 
    <activity 
     android:name=".app.WorkOrderActivity" 
     android:label="@string/work_order" 
     android:taskAffinity="com.package.task_for_work_order_activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <action android:name=".app.WorkOrderActivity"/> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <!-- inventory activity --> 
    <activity 
     android:name=".app.InventoryActivity" 
     android:label="@string/inventory" 
     android:taskAffinity="com.package.task_for_inventory_activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <action android:name=".app.InventoryActivity"/> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application>