77

ユーザーがボタンをクリックしたときに、Androidのホーム画面にプログラムで移動したい。これはどのように行うことができますか?

4

6 に答える 6

180

インテントを介してこれを行うことができます。

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

このインテントは、ユーザーが定義したランチャーアプリケーションを起動します。ユーザーがこれを予期しない場合、アプリケーションがクラッシュしたように見えるため、これには注意してください。

これでアプリから終了ボタンを作成する場合は、Androidの終了ボタンに関するこの記事をお読みください

于 2010-09-16T08:41:10.080 に答える
31

ワンラインソリューション

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

ホームボタンが押されたときに動作します

于 2015-08-07T07:42:36.093 に答える
11

Januszの答えは素晴らしいです。

私が追加したいのは、コメントするには少し長すぎるということだけですが、現在のアクティビティを参照しなくてもホーム画面に移動できるということです。

Januszのコードは、次の理由でアクティビティまたはフラグメントから呼び出す必要がありますstartActivity()

これを回避するために、アプリコンテキストへの静的参照をアプリケーションファイルに保存できます。

public class YourApplication extends Application
{

    private static Context mAppContext;

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

    public static Context getContext()
    {
        return mAppContext;
    }

}

これで、アクティビティ、フラグメント、または現在のアクティビティを参照する他のクラスだけでなく、アプリ内の任意のクラスからデバイスのホーム画面にユーザーを送信できます(これが良いか悪いかを判断できます)。

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);
于 2012-03-15T19:50:17.517 に答える
1

Android開発者サイトから

これらの追加パラメーターを使用してインテントとして指定できる他の操作の例を次に示します。

* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
于 2010-09-16T07:48:09.407 に答える
1
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
于 2019-07-12T04:42:42.380 に答える
0

私はこれが少し遅いことを知っていますが、私も同じ問題に遭遇しました、そしてこれが私がそれを解決した方法です。戻ってMainActivity、既存のフラグを追加する必要がありますActivity

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

MainActivityこれで、アクティブな状態で戻るボタンを押すと、ホーム画面に移動します。

于 2017-09-06T10:36:06.350 に答える