Ich möchte programmgesteuert in Android zum Startbildschirm wechseln, wenn der Benutzer auf die Schaltfläche klickt. Wie kann das gemacht werden?
Ich möchte programmgesteuert in Android zum Startbildschirm wechseln, wenn der Benutzer auf die Schaltfläche klickt. Wie kann das gemacht werden?
Antworten:
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
startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME));
(FLAG_ACTIVITY_NEW_TASK scheint nicht notwendig zu sein.)
ACTION_MAIN
und worauf bezieht CATAGORY_HOME
sich?
Einzeilige Lösung
moveTaskToBack(true); //activity.moveTaskToBack(true);
Es verhält sich so, als ob die Home-Taste gedrückt wird
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);
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.
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 MainActivity
die aktive Zurück-Taste gedrückt haben , wird der Startbildschirm aufgerufen.
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));