Как запускать основной экран в Android-приложении

Я хочу запустить домашний экран Android с моим приложением. Основная цель - показать все приложения пользователям, когда он нажимает специализированный ключ. Собственно, путь не важен. Любая идея сделать это?

Ответы

Ответ 1

Вот код для запуска HomeActivity

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

Ответ 2

Комментарии, сделанные вами по некоторым ответам, предполагают, что вы действительно хотите запустить Launcher (вы можете обновить заголовок, если это так). Для этого используйте тот же подход, предложенный Анандом для запуска домашней деятельности.

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

Ответ 3

В Android нет "экрана, который показывает приложения со значками для пользователей".

То, о чем вы думаете, является особенностью некоторых домашних экранов. Для стандартизации не существует стандартизованного Intent, и для домашних экранов нет необходимости иметь такую ​​функцию.

Вы можете написать свой собственный. Вот пример проекта, который отображает запускаемые действия в ListView.

Ответ 4

попробуйте что-то вроде этого, чтобы нажать кнопку "Назад", и вы перейдете к главному экрану /...

@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);
}

Ответ 5

Я не уверен, полностью ли понимаю, что вы пытаетесь сделать! Но если вы имеете в виду, что хотите, чтобы пользователь мог использовать другое приложение, щелкнув внутри вашего приложения, вы должны проверить "намерение". Запустите образец API DEMO в eclipse и запустите App → Intents

Ответ 6

Я думаю, что опаздываю на вечеринку, но у меня была такая же проблема. В приведенных ниже ответах запускается меню выбора, которое позволяет вам выбрать Launcher. Если у вас в вашем коде более одной пусковой установки, ответ здесь: fooobar.com/questions/366660/... может помочь. Этот напрямую запускает главный экран по умолчанию для Android.

Ответ 7

Ни одно из решений здесь не работает для меня.

Я получил его, используя приведенный ниже код

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();
       }
   }
}

Получил это от: fooobar.com/questions/366661/...

Надеюсь, это поможет кому-то

Ответ 8

Я достиг этого, используя одну строку

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

Он ведет себя как кнопка "Главная"

Ответ 9

Это работает хорошо для меня!

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

Может кто-нибудь объяснить, зачем нам это нужно?

startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

btw, это то, что я искал

moveTaskToBack(true);