web-dev-qa-db-ja.com

プログラムでホーム画面を起動する方法Android

Androidのホーム画面をアプリケーションで起動したい。主なターゲットは、ユーザーが専用のキーを押したときにすべてのアプリを表示することです。実際には方法は重要ではありません。これを行うアイデア?

21
sjor

HomeActivityを開始するためのコードは次のとおりです

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

一部の回答に対して行ったコメントは、実際にランチャーを起動することを提案しています(これが当てはまる場合は、タイトルを更新することをお勧めします)。これを行うには、ホームアクティビティを開始するためにAnandが提案したのと同じアプローチを使用します。

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_LAUNCHER);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
11
MM.

Androidには「ユーザーにアイコン付きでアプリを表示する画面」はありません。

あなたが考えているのは、いくつかのホーム画面の機能です。これをトリガーする標準化されたIntentはありません。また、ホーム画面にそのような機能がある必要はありません。

自分で書いても大丈夫です。 サンプルプロジェクトはこちら 起動可能なアクティビティをListViewに表示します。

5
CommonsWare

このようなものを試して、ホーム画面に移動する戻るボタンをクリックしてください/ ...

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // Display confirmation here, finish() activity.
        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

パーティーには非常に遅れていると思いますが、同様の懸念がありました。ここでの回答により、ランチャーを選択できる選択メニューが起動します。コードに複数のランチャーがある場合、ここの答え https://stackoverflow.com/a/8666155 が役立つかもしれません。この直接は、Androidのdefaultホーム画面を起動します。

1
radioactivet

ここでの解決策のどれも私のために働いていません。

以下のコードを使用して動作させました

PackageManager pm = getPackageManager();
Intent i = new Intent("Android.intent.action.MAIN");
i.addCategory("Android.intent.category.HOME");
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
if (lst != null) {
   for (ResolveInfo resolveInfo : lst) {
       try {
       Intent home = new Intent("Android.intent.action.MAIN");
       home.addCategory("Android.intent.category.HOME");
       home.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
       startActivity(home);
       break;
       } catch (Throwable t) {
           t.printStackTrace();
       }
   }
}

それを手に入れました: https://stackoverflow.com/a/16483596/124178

これが誰かを助けることを願っています

1
Bruce

あなたがやろうとしていることを完全に理解しているかどうかはわかりません!ただし、アプリケーション内をクリックしてユーザーが別のアプリケーションにアクセスできるようにする場合は、「意図」を確認する必要があります。 EclipseでAPI DEMOサンプルコードを実行し、App-> Intentsを実行します。

1
theAlse

これは私にとってはうまくいきます!

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

なぜこれが必要なのか誰かが説明できますか?

startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

ところで、これは私が探していたものです

moveTaskToBack(true);
0
ShAkKiR

1行で達成しました

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

ホームボタンのように動作します

0
Jawad Zeb