2012-01-19 16 views
34

Mam dwa działania oznaczone filtr zamiaremDwa wyrzutni działania

<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> 

Problem polega na tym, że kiedy jestem instalacji plik apk, nie ma aktywności pokazane, ponieważ, jak już systemu rozumieć nie można określić, jaka aktywność ma być pokazywana.

Po prostu potrzebuję dwóch działań pokazanych w programie uruchamiającym, więc proszę nie udzielać porad dotyczących usuwania filtrów zamiarów z drugiej aktywności, a jeśli to zrobisz, zapewnij mi inny sposób wyświetlania dwóch ikon w programie uruchamiającym.

+0

Powiedz proszę więcej szczegółów, dlaczego potrzebuję tego? – Natali

+1

ponieważ mam dwa całkowicie oddzielone moduły interfejsu użytkownika, utrzymuję je w różnych działaniach i chcę, aby oba były dostępne z pulpitu android. – Orest

+0

Z najnowszymi wersjami systemu Android powyższy kod działa poprawnie - pierwsze działanie zadeklarowane w manifeście systemu Android ma pierwszeństwo i jest pokazywane użytkownikowi. – bschandramohan

Odpowiedz

65

należy określić których działalność jest domyślnym jeden dodając następującą linię do swojego intent-filter:

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

wstawić ten w działalności domyślnej i zachować resztę. To powinno działać.

Można również dodać inną ikonę na swojej 2nd aktywności z atrybutem android:icon="@drawable/myothericon"

+0

AH tego właśnie szukałem, ale nie mogłem go znaleźć. To jest poprawna odpowiedź. –

+0

rok, jest to dla mnie przydatne. – wangzhengyi

2

myślę, że to ze względu na „android.intent.action.MAIN” działania, to pracował dla mnie:

<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

Próbowałem, ale w tym przypadku druga aktywność nie pojawia się w moim launcherze .. nie mogę znaleźć rozwiązania tego problemu. Może to jest problem z Androidem 2.1 – Orest

+0

Nie próbowałem usunąć drugą akcję MAIN i uruchomić ją na emulatorze 2.3.3 i nie ma zastosowania – Orest

+0

hmm, czy możesz umieścić swój cały manifest w swoim pytaniu? – Reno

1

Wydaje możliwe jest mieć wiele działań startowych za pomocą właściwości powinowactwa zadaniem. Patrz odpowiedź na https://stackoverflow.com/a/3270422/819904

+0

Nigdy nie publikuj odpowiedzi, które są w zasadzie "gdzie indziej" ... link może zostać usunięty lub zmieniony ... nawet wtedy, podobnie jak Ty pokazujesz innych użytkowników w ten sposób: "Chcesz rozwiązać ten problem? ... ".... wtedy staje się" logika kołowa działa, ponieważ logika kołowa działa, ponieważ logika kołowa działa, ponieważ 'goTo (charAt (0)' " – Bonatti

+0

Przeczytaj ten link w:" [Podaj kontekst dla linków] (http: //stackoverflow.com/help/how-to-answer) ", który stwierdza: linki do zewnętrznych zasobów są zachęcane, ale dodaj kontekst wokół linku, aby inni użytkownicy mieli pojęcie, co to jest i dlaczego tam jest. najważniejsza część ważnego linku, na wypadek, gdyby strona docelowa była nieosiągalna lub stała w trybie offline – Bonatti

+0

Po prostu proszę o odpowiedź na pytanie, poprzez udzielenie odpowiedzi, a nie przekierowanie nigdzie indziej (nawet "wewnątrz" domeny stackoverflow) podobnie właściciel tego pytania może "del ete "pytanie, odpowiedź można zredagować, a nawet samo pytanie być zamknięte ..... Pytam cię o to, aby poprawić sposób, w jaki odpowiadasz na pytania, w sposób, który pomaga innym. – Bonatti

1

Dodaj <action> przedmioty z android:name atrybutów zdefiniowanych zarówno intent filtry:

<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> 
Powiązane problemy