Programmgesteuert zum Startbildschirm wechseln


75

Ich möchte programmgesteuert in Android zum Startbildschirm wechseln, wenn der Benutzer auf die Schaltfläche klickt. Wie kann das gemacht werden?


13
Bitte akzeptieren Sie einige Ihrer älteren Fragen.
Nothrow

Eine einfache Möglichkeit besteht darin, onBackPressed oder über keyEvent = Backpressed zu überschreiben und onHomePressed darauf aufzurufen. dann wird es sich wie homePressed
AndroidGeek

Antworten:


172

Sie können dies durch eine Absicht tun .

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

Diese Absicht startet die vom Benutzer definierte Launcher-Anwendung. Seien Sie vorsichtig damit, da dies so aussieht, als wäre Ihre Anwendung abgestürzt, wenn der Benutzer dies nicht erwartet.

Wenn Sie möchten, dass dies eine Exit-Schaltfläche aus Ihrer App erstellt, lesen Sie bitte diesen Artikel über die Exit-Schaltflächen in Android


3
Ich habe gelesen, dass dies in einer App sehr falsch ist. Aber warum sagen die Leute das? Ich weiß, wo ich es benutze. Und es sieht so aus, als ob ich nur das tun kann, was ich tun möchte. Ist es also in Ordnung, es zu benutzen?
Sudarshan Bhat

6
Das Einfachste, was für mich funktioniert: startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME));(FLAG_ACTIVITY_NEW_TASK scheint nicht notwendig zu sein.)
Jonik

Dies ist ein älterer Thread, aber obwohl dies funktioniert, funktioniert die Rückkehr zur vorherigen Aktivität nicht. Welche Eigenschaften dazu?
Portfoliobuilder

2
@portfoliobuilder, Sie müssen nur FLAG_ACTIVITY_NEW_TASK entfernen.
user802421

Was bedeutet ACTION_MAINund worauf bezieht CATAGORY_HOMEsich?
Srujan Barai

30

Einzeilige Lösung

moveTaskToBack(true); //activity.moveTaskToBack(true);

Es verhält sich so, als ob die Home-Taste gedrückt wird


Es funktioniert. Ist es ein guter Ansatz. Wird es in jedem Fall funktionieren?
Prabs

In meiner Situation funktioniert es gut. Ich bin mir nicht sicher, ob es in allen Fällen funktioniert oder nicht
AndroidGeek

1
Funktioniert gut für mich (Android 6.x)
dangling_refrenz

1
Funktioniert auch gut für mich (Android 7.x)
Sinan Ceylan

Dies schließt meine Anwendung (Android 9.x)
Eildosa

11

Janusz 'Antwort ist großartig.

Das einzige, was ich hinzufügen möchte, was für einen Kommentar etwas zu lang ist, ist, dass Sie zum Startbildschirm wechseln können, ohne einen Verweis auf die aktuelle Aktivität zu haben.

Janusz 'Code muss aus einer Aktivität oder einem Fragment aufgerufen werden, weil startActivity(),

Um dies zu umgehen, können Sie einen statischen Verweis auf den Kontext Ihrer Apps in Ihrer Anwendungsdatei speichern:

public class YourApplication extends Application
{

    private static Context mAppContext;

    public void onCreate()
    {
        super.onCreate();
        ...
        YourApplication.mAppContext = getApplicationContext();
    }

    public static Context getContext()
    {
        return mAppContext;
    }

}

Jetzt können Sie den Benutzer von jeder Klasse in Ihrer App zum Startbildschirm des Geräts senden, nicht nur von Aktivitäten, Fragmenten oder anderen Klassen mit Bezug auf die aktuelle Aktivität (Sie können entscheiden, ob dies eine gute oder eine schlechte Sache ist):

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);

0

Vom Android-Entwickler - Website

Hier sind einige Beispiele für andere Operationen, die Sie mit diesen zusätzlichen Parametern als Absichten angeben können:

* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.

3
Es ist nichts Falsches daran, Fragen zu stellen, die mit einer schnellen Google-Abfrage und einem Blick in die Dokumentation beantwortet werden können. Wenn die Frage die richtigen Schlüsselwörter enthält, wird sie sehr schnell auf der ersten Google-Seite angezeigt und macht das Auffinden der richtigen Informationen und des Beispielcodes viel schneller als das Durchsuchen der Dokumentation. Ich bin ein irgendwie ausgebildeter Android-Programmierer, aber ich müsste googeln und ein oder zwei Seiten überspringen, um diese Frage zu beantworten. Es wäre großartig, wenn die Antwort auf diese Frage hier wäre, wo sie bearbeitet, verbessert, aktualisiert und bewertet werden kann.
Janusz

0

Ich weiß, dass dies etwas spät ist, aber ich bin auch auf das gleiche Problem gestoßen, und hier ist, wie ich es gelöst habe. Wenn Sie zu Ihrem zurückkehren MainActivity, müssen Sie Flags vom Ausgang hinzufügenActivity

    final Intent mainActivity = new Intent(this, MainActivity.class);
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

Wenn Sie nun MainActivitydie aktive Zurück-Taste gedrückt haben , wird der Startbildschirm aufgerufen.


0
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.