Как запустить Домашний экран программно в Android
Я хочу запустить домашний экран Android с моим приложением. Основная цель – показать все приложения пользователям, когда он нажимает специализированный ключ. Собственно, путь не важен. Любая идея сделать это?
- Что такое синтаксис?
- Управление конструкторами со многими параметрами в Java
- Предпочтения в списке Android: есть сводка в качестве выбранного значения?
- как использовать okhttp для загрузки файла?
- ИК-излучатель и Android 5.0
- Зачем нужен метод main () в основном classе java
- Как сделать PDF в Android
- Как изменить имя пакета приложения для Android
Вот код для запуска HomeActivity
Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startMain);
Комментарии, сделанные вами по некоторым ответам, предполагают, что вы действительно хотите запустить Launcher (вы можете обновить заголовок, если это так). Чтобы сделать это, используйте тот же подход, предложенный Анандом для запуска домашней деятельности.
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); }
Я не уверен, полностью ли понимаю, что вы пытаетесь сделать! Но если вы имеете в виду, что хотите, чтобы пользователь мог использовать другое приложение, щелкнув внутри вашего приложения, вы должны проверить «намерение». Запустите код примера API DEMO в eclipse и запустите App -> Intents
Я думаю, что я очень опаздываю на вечеринку, но у меня была такая же проблема. В приведенных ниже ответах запускается меню выбора, которое позволяет вам выбрать Launcher. Если у вас в вашем коде более одной пусковой установки, ответ здесь: https://stackoverflow.com/a/8666155 может помочь. Это непосредственно запускает основной экран Android по умолчанию .
Ни одно из решений здесь не работает для меня.
Я получил его, используя приведенный ниже код
PackageManager pm = getPackageManager(); Intent i = new Intent("android.intent.action.MAIN"); i.addCategory("android.intent.category.HOME"); List 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
Надеюсь, это поможет кому-то
Я достиг этого, используя одну строку
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);