Zmień początkową aktywność aplikacji

386

Stworzyłem mięso i wnętrzności mojej aplikacji, ale chcę dodać inną aktywność, która będzie punktem wyjścia (rodzaj ekranu logowania).

Kilka pytań:

  • 1 Mam dość przyzwoitą wiedzę na temat przełączania działań (na podstawie tego artykułu: http://www.linux-mag.com/id/7498 ), ale nie jestem pewien, jak zacząć tworzyć nowe ( z zaćmieniem) .

  • 2 Jak utworzyłem nowe działanie, jak mogę ustawić je jako działanie domyślne mojej aplikacji? Przypuszczam, że mógłbym po prostu zmienić nazwę zajęć ... ale czy jest bardziej elegancki sposób na poradzenie sobie z tym (może w ramach AndroidManifest.xml)?

Kyle
źródło

Odpowiedzi:

660

Tak, korzystasz z AndroidManifest.xmlpliku. Możesz nawet mieć więcej niż jedno działanie uruchamiające określone w manifeście aplikacji. Aby aktywność była widoczna w programie uruchamiającym, dodajesz te atrybuty do swojej aktywności w manifeście:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Nathan Schwermann
źródło
49
Dla każdego, kto nie wie, o czym mówi manifest, ten post to AndroidManifest.xml w katalogu głównym twojego projektu. W Eclipse możesz kliknąć dwukrotnie i kliknąć kartę w najdalszym prawym rogu, aby bezpośrednio edytować plik XML.
Austyn Mahoney,
3
wielkie dzięki. Włączając ten węzeł zamiaru filtru do jego węzłów potomnych, co powoduje, że niezależnie od tego, jakie działanie zostanie załadowane po uruchomieniu aplikacji?
Kyle
4
@Kyle sprawi, że ta aktywność pojawi się na stronie uruchamiania, możesz mieć wiele działań z tym filtrem intencji, który daje wiele ikon na ekranie głównym.
Nathan Schwermann
3
wspominasz o tym wierszu „możesz nawet mieć więcej niż jedną aktywność programu uruchamiającego określoną w manifeście aplikacji”. Która aktywność zostanie uruchomiona po raz pierwszy, jeśli mamy więcej niż jedną aktywność
Tofeeq Ahmad
48
To poprawna odpowiedź, ale zauważyłem coś dziwnego: jeśli zmienisz działanie początkowe na coś innego, a pierwotnie uruchomione działanie nadal istnieje, zestaw SDK nie będzie mógł uruchomić aplikacji. Jakoś ma odniesienie do aktywności w konfiguracji uruchamiania. Dlatego po wykonaniu powyższej zmiany musisz także przejść do „Uruchom”> „Debuguj konfiguracje”, znaleźć profil kompilacji projektu, kartę „Android” i zmienić uruchomioną aktywność na domyślną lub prawidłową w „Uruchom” : ”. Nie jestem pewien, dlaczego dla mnie ta opcja domyślna była wyłączona, ale zmiana z powrotem działała.
zeh
91

Przejdź do AndroidManifest.xml w folderze głównym projektu i zmień nazwę działania, które chcesz wykonać jako pierwsze.

Przykład:

<activity android:name=".put your started activity name here"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
neeraj t
źródło
11
jeśli przy tym nadal nie działa w Android Studio, musisz kliknąć ikonę Androida (tę z aplikacją Word) i wybrać „Edytuj konfiguracje”, a następnie w zakładce Ogólne, sekcja Aktywność wybierz „Uruchom domyślną aktywność”
Broń X
47

Jeśli korzystasz z Android Studio i być może wcześniej wybrałeś inną działalność do uruchomienia.

Kliknij, Run > Edit configurationa następnie upewnij się, że wybrana jest opcja Uruchom domyślną aktywność .

Uruchom domyślną aktywność

Zeezer
źródło
jeśli w AndroidManifest.xml nie ma filtru zamiaru dla programu uruchamiającego, jest to rozwiązanie.
Amir Fazwan
1
Dotyczy to również Eclipse. Samo określenie filtrów zamiaru nie wystarczy. Filtry zamiaru są używane, jeśli plik APK jest wykonywany bezpośrednio przez użytkownika, ale jeśli plik APK jest wykonywany przez Eclipse, który go instaluje, próbuje uruchomić określone działanie. To konkretne działanie jest określone w „Właściwościach projektu” (kliknij prawym przyciskiem myszy projekt) -> Ustawienia uruchamiania / debugowania.
Iker Jamardo Zugaza
To jest niesamowite! Dzięki za podpowiedź
Rafael Oliveira,
30
 <application
    android:icon="@drawable/YOUR_ICON"    <!-- THIS ICON(IMAGE) WILL BE SHOWN IN YOUR APPS -->
    android:label="MY APP NAME " >    <!-- HERE LABEL(APP NAME) -->
    <activity
        android:name=".application's starting activity"  <!-- (.)dot means current dir, if your activity is in another package then give full package name ex: com.xxx.Activity  -->
        android:label="LABEL FOR ACTIVITY "
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
LMK
źródło
18

Postępuj zgodnie z poniższymi instrukcjami:

1 :) Otwórz AndroidManifest.xml plik.

2 :) Przejdź do kodu aktywności, który chcesz ustawić jako główną aktywność, jak poniżej.

takich jak chcę, aby SplashScreen był główną działalnością

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
</activity>

3 :) Teraz skopiuj poniższy kod pomiędzy tagi aktywności tak samo jak:

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

a także sprawdź, czy nowo dodane wiersze nie są dołączone do innych tagów aktywności.

Bhunnu Baba
źródło
17

Łatwo to naprawić.

  • Zmiany w działaniu Launchera są również przechowywane w konfiguracji debugowania .
  • Iść do Run > Debug Configurations i edytuj ustawienie.
  • Jest też podobne ustawienie w IntelliJ pod Run > Edit Configurationswybierz domyślny prowadzenia działalności i nie będzie już zapisać ustawienie w ten sposób.
użytkownik3154790
źródło
14

To proste. Zrób to w swoim Manifestpliku.

<activity
    android:name="Your app name"
    android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</activity>
Rohit Sharma
źródło
1
powinieneś usunąć <category android: name = "android.intent.category.HOME" />
Behrouz.M
2
<category android:name="android.intent.category.DEFAULT" />, to jest właśnie to, co tu działa
1111161171159459134,
1
android.intent.category.HOMEjest przeznaczony do użytku w aplikacji w trybie kiosku, w której domyślny program uruchamiający jest zastępowany. Korzystanie z tego bez wymiany programu uruchamiającego spowoduje wyświetlenie monitu podczas uruchamiania SystemUI z pytaniem, którego programu uruchamiającego użyć. Zobacz także: stackoverflow.com/questions/22911156/…
CJBS
6
 <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
Wyjątek wskaźnika zerowego
źródło
5

Wystarczy przejść do pliku AndroidManifest.xml i dodać jak poniżej

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

następnie zapisz i uruchom swój projekt na Androida.

użytkownik3206168
źródło
3

Dodajesz to, aby uruchomić aktywność android:exported="true"w pliku manifestu, takim jak

 <activity
      android:name=".activities.activity.MainActivity"
      android:windowSoftInputMode="adjustPan"
      android:exported="true"/>
  <activity

Otwórz plik Java tego działania i kliknij prawym przyciskiem myszy, a następnie kliknij polecenie Uruchom „główne działanie”

LUB

Otwórz plik Java tego działania i naciśnij Ctrl+ Shift+ F10.

Prabh głęboko
źródło
Jaki to ma wpływ? Właśnie się uruchamiam?
chia yongkang
2

W ostatnim projekcie zmieniłem domyślną aktywność w AndroidManifest.xml za pomocą:

<activity android:name=".MyAppRuntimePermissions">
</activity>

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

W Android Studio 3.6; to wydaje się zepsute. Użyłem tej techniki w przykładowych aplikacjach, ale kiedy używam jej w tej aplikacji w świecie rzeczywistym, spada ona. IDE po raz kolejny zgłasza:

Błąd uruchamiania aplikacji: nie znaleziono domyślnej aktywności.

IDE nadal pokazywało błąd konfiguracji w obszarze „uruchom aplikację” na pasku narzędzi (żółta strzałka na tym zrzucie ekranu)

Błąd w konfiguracji „uruchom aplikację”

Aby naprawić ten błąd, wypróbowałem kilka przebudów projektu, a na koniec Plik >> „Unieważnij pamięć podręczną / uruchom ponownie” . To nie pomogło. Aby uruchomić aplikację, musiałem „Edytuj konfiguracje” i wskazać konkretne działanie zamiast działania domyślnego:

Edytuj okno dialogowe konfiguracji

martshal
źródło