アプリで Android のホーム画面を起動したい。主な目標は、ユーザーが特殊なキーを押したときにすべてのアプリをユーザーに表示することです。実際、方法は重要ではありません。これを行うアイデアはありますか?
9 に答える
HomeActivity を開始するためのコードは次のとおりです。
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
いくつかの回答に対して行ったコメントは、実際にランチャーを起動したいことを示唆しています (その場合は、タイトルを更新することをお勧めします)。これを行うには、Anand がホーム アクティビティを開始するために提案したのと同じアプローチを使用します。
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_LAUNCHER);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Androidには「アプリとそのアイコンをユーザーに表示する画面」はありません。
あなたが考えているのは、いくつかのホーム画面の機能です。これをトリガーするための標準化Intentされたものはなく、ホーム画面にそのような機能がある必要はありません。
あなたはあなた自身を書くことを歓迎します。これは、で起動可能なアクティビティを表示するサンプルプロジェクトListViewです。
このようなことを試して、ホーム画面に戻るボタンをクリックしてください/ ...
@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);
}
ここでの解決策はどれも私のために働いていません..
以下のコードを使用して動作させました
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/1241783
これが誰かを助けることを願っています
私はパーティーに非常に遅れていると思いますが、同様の懸念がありました. ここでの回答により、ランチャーを選択できる選択メニューが起動します。コードに複数のランチャーがある場合は、https ://stackoverflow.com/a/8666155 の回答が役立つ場合があります。これにより、Androidのデフォルトのホーム画面が直接起動します。
あなたがやろうとしていることを完全に理解しているかどうかはわかりません! ただし、ユーザーがアプリケーション内をクリックして別のアプリケーションにアクセスできるようにする場合は、「意図」を確認する必要があります。Eclipse でAPI DEMO サンプル コードを実行し、App -> Intents を実行します。
1行で達成しました
moveTaskToBack(true); //activity.moveTaskToBack(true);
ホームボタンのように動作します
これは私にとってうまくいっています!
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startActivity(startMain);
なぜこれが必要なのか誰か説明できますか?
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ところで、これは私が探していたものです
moveTaskToBack(true);