ユーザーがボタンをクリックしたときにAndroidでプログラムでホーム画面に移動したいのですが、どうすればよいですか?
これは Intent を使用して実行できます。
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
このインテントは、ユーザーが定義したランチャーアプリケーションを起動します。ユーザーがこれを予期していない場合、アプリケーションがクラッシュしたように見えるため、これに注意してください。
アプリで終了ボタンを作成したい場合は、Androidの exit Buttons に関するこの記事をご覧ください。
1行のソリューション
moveTaskToBack(true); //activity.moveTaskToBack(true);
ホームボタンが押されると動作します
ヤヌスの答え は素晴らしい。
私が追加したいのは、コメントするには長すぎますが、現在のアクティビティを参照せずにホーム画面に移動できることです。
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);
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
Android開発者 サイトから
これらの追加パラメーターを使用してインテントとして指定できる他の操作の例を次に示します。
* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.