アプリ側でホーム画面に戻る方法

アンドロイド端末では画面下についているHOMEボタンを押すとホーム画面に戻るようになっています。

この動作をアプリ側で行いたいと思って次のようなコードを書いてみました。

long eventTime = SystemClock.uptimeMillis();
KeyEvent event = new KeyEvent(eventTime, eventTime, KeyEvent.ACTION_MULTIPLE,
                       KeyEvent.KEYCODE_HOME, 1, 0);
//HOMEボタンが押されたときのイベント
dispatchKeyEvent(event);
//キーイベントを発行

ホームボタンが押されたときのイベントを自作してまるでホームボタンが押されたような動作をさせようとしています。

しかし、これはうまくいきません。なぜかというとアプリ側ではホームボタンを受け取れないようになっているからです。

そこで調べてみるとホーム画面に戻るためのIntentを発行すればよいということが分かりました。

やり方は次の通りです。

public class MainActivity extends FragmentActivity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button backHomeButton = (Button)findViewById(R.id.back_home_btn);
        backHomeButton.setonClickListener(new View.onClickListener()
        {
            public void onClick(View v)
            {
                //ホーム画面に戻るインテントを起動
                Intent homeIntent = new Intent(Intent.ACTION_MAIN);
                homeIntent.addCategory(Intent.CATEGORY_HOME);
                homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                MainActivity.this.startActivity(homeIntent);
            }
        });
    }
}

ACTION_MAINが新しく起動するインテントであることを示す名前、CATEGORY_HOMEがホーム画面に戻るインテントの名前です。

この例ではボタンを押したときにホーム画面に戻るようにしています。

以上がホーム画面に戻る方法です。

関連項目
プライバシーポリシー