Изменить стартовую активность приложения

Я создал основу своего приложения, но я хочу добавить другое действие, которое будет отправной точкой (своего рода экран входа в систему).

Пара вопросов:

  • 1 У меня довольно неплохие навыки переключения между видами деятельности (на основе этой статьи: http://www.linux-mag.com/id/7498), но я не уверен, как создать новый (с помощью eclipse).

  • 2 После создания нового действия, как я могу установить его как действие по умолчанию для моего приложения? Я предполагаю, что могу просто изменить имя классов ... но есть ли более элегантный способ чтобы справиться с этим (может быть, в AndroidManifest.xml)?


person Kyle    schedule 02.09.2010    source источник


Ответы (11)


Да, вы используете файл AndroidManifest.xml. На самом деле в манифесте приложения может быть даже указано несколько действий запуска. Чтобы действие было видно на панели запуска, вы добавляете эти атрибуты к своей активности в манифесте:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
person Nathan Schwermann    schedule 02.09.2010
comment
Для тех, кто не знает, о чем говорится в манифесте в этом посте, это AndroidManifest.xml в корне вашего проекта. В Eclipse вы можете дважды щелкнуть по нему и щелкнуть вкладку в крайнем правом углу, чтобы напрямую отредактировать XML. - person Austyn Mahoney; 03.09.2010
comment
большое спасибо. Итак, включив этот узел фильтра намерений с его дочерними узлами, он будет выполнять любое действие, которое загружается первым при запуске приложения? - person Kyle; 03.09.2010
comment
@Kyle, это заставит эту активность отображаться на странице запуска, у вас может быть несколько действий с этим фильтром намерений, предоставляющим вам несколько значков на главном экране. - person Nathan Schwermann; 18.05.2011
comment
вы упоминаете эту строку, на самом деле, в манифесте вашего приложения может быть даже указано несколько действий запуска. Какое действие будет запускаться первым, если у нас будет более одного действия - person Tofeeq Ahmad; 29.11.2011
comment
Это правильный ответ, но я заметил кое-что странное: если вы измените начальное действие на что-нибудь еще, а исходное запущенное действие все еще существует, SDK больше не сможет запускать ваше приложение. Как-то там есть ссылка на активность в конфигурации запуска. Таким образом, после того, как вы сделаете вышеуказанное изменение, вам также необходимо перейти в раздел «Выполнить» ›« Конфигурации отладки », найти профиль сборки вашего проекта, вкладку« Android »и изменить запущенное действие либо на значение по умолчанию, либо на правильное в разделе« Запуск: ». Не уверен, почему для меня был отменен выбор по умолчанию, но изменение его обратно сработало. - person zeh; 01.02.2012
comment
зех, твоя звезда !! Мне было интересно, что происходит с приложением, которое у меня было с той же проблемой в течение 2 лет :-) - person andy_spoo; 24.03.2012
comment
Действительно странно попасть в Eclipse и обнаружить, что вы не можете использовать контекстное меню «Свойства» проекта. Мы просто не можем легко определить, какой вид деятельности будет основным. Я блуждаю, если Android Studio позволяет нам установить основное действие. - person Junior Mayhé; 07.03.2014
comment
есть ли в студии Android какой-либо ярлык для выполнения каких-либо действий с основным действием, например, щелчок правой кнопкой мыши (в любом файле активности) - ›выполнение основного действия и т. д.? - person MarsPeople; 18.10.2015
comment
Простое решение. Решайте быстро - person Faris Rayhan; 10.04.2016
comment
что делать, если у меня нет категории LAUNCHER. Мое приложение устанавливается впервые. И я не знаю, как мне запустить его на своем телефоне. - person elfekz; 03.10.2016
comment
В AndroidStudio необходимо вручную изменить начальную активность, поскольку она игнорирует файл manifest.xml. В меню «Выполнить» вы найдете параметр «Изменить конфигурации ...». - person Stig Helmer; 13.02.2020

Перейдите к AndroidManifest.xml в корневой папке вашего проекта и измените имя действия, которое вы хотите выполнить в первую очередь.

Пример:

<activity android:name=".put your started activity name here"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
person neeraj t    schedule 24.06.2011
comment
если это все еще не работает в Android Studio, вам нужно щелкнуть значок Android (тот, который со словом app) и выбрать Изменить конфигурации, затем на вкладке Общие в разделе Активность выберите Запуск действия по умолчанию - person Eduardo Hernández; 25.08.2014

Если вы используете Android Studio и, возможно, ранее выбрали для запуска другое действие.

Щелкните Run > Edit configuration и убедитесь, что выбрано Запуск действия по умолчанию.

Запустить действие по умолчанию

person Zeezer    schedule 07.05.2015
comment
если в AndroidManifest.xml нет фильтра намерений для средства запуска, это решение. - person Amir Fazwan; 06.11.2015
comment
Это применимо и к Eclipse. Недостаточно просто указать фильтры намерений. Фильтры намерений используются, если APK запускается непосредственно пользователем, но если APK выполняется Eclipse, который устанавливает его, пытается запустить определенное действие. Это конкретное действие указано в свойствах проекта (щелкните проект правой кнопкой мыши) - ›Параметры запуска / отладки. - person Iker Jamardo Zugaza; 12.01.2016
comment
Это потрясающе! Спасибо за совет - person Rafael Oliveira; 07.04.2016

Следуйте приведенным ниже инструкциям:

1 :) Откройте свой AndroidManifest.xml файл.

2 :) Перейдите к коду активности, которую вы хотите сделать своей основной деятельностью, как показано ниже.

например, я хочу сделать SplashScreen основным видом деятельности

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
</activity>

3 :) Теперь скопируйте приведенный ниже код между тегами активности так же, как:

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

а также убедитесь, что вновь добавленные строки не связаны с другими тегами активности.

person Bhunnu Baba    schedule 31.05.2016

Это легко исправить.

  • Изменения активности Launcher также сохраняются в конфигурации отладки.
  • Перейдите к Run > Debug Configurations и отредактируйте настройку.
  • Аналогичная настройка есть и в Intellij в разделе Run > Edit Configurations выберите Выполнить действие по умолчанию, и он больше не будет сохранять настройки таким образом.
person user3154790    schedule 29.01.2014

Это просто. Сделайте это в своем Manifest файле.

<activity
    android:name="Your app name"
    android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</activity>
person Community    schedule 21.08.2013
comment
вам следует удалить ‹категорию android: name = android.intent.category.HOME /› - person Behrouz.M; 18.10.2014
comment
<category android:name="android.intent.category.DEFAULT" />, это как раз то, что здесь работает - person 1111161171159459134; 19.08.2015
comment
android.intent.category.HOME предназначен для использования в приложении в стиле киоска, где заменяется средство запуска по умолчанию. Использование этого без замены программы запуска приведет к появлению запроса во время запуска SystemUI с вопросом, какую программу запуска использовать. См. Также: stackoverflow.com/ questions / 22911156 / - person CJBS; 14.10.2015

Просто перейдите в свой файл AndroidManifest.xml и добавьте, как показано ниже

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

затем сохраните и запустите свой проект Android.

person user3206168    schedule 31.01.2014

Вы добавляете это, вы хотите запустить действие android:exported="true" в файле манифеста, например

 <activity
      android:name=".activities.activity.MainActivity"
      android:windowSoftInputMode="adjustPan"
      android:exported="true"/>
  <activity

Откройте java-файл этого действия и щелкните правой кнопкой мыши, затем выберите «Выполнить основное действие».

OR

Откройте java-файл этого действия и нажмите Ctrl + Shift + F10.

person Prabh deep    schedule 28.09.2018
comment
Какой эффект это имеет? Только запуск? - person chia yongkang; 17.11.2019

В недавнем проекте я изменил действие по умолчанию в AndroidManifest.xml следующим образом:

<activity android:name=".MyAppRuntimePermissions">
</activity>

<activity android:name=".MyAppDisplay">
    <intent-filter>
        <action android:name="android.intent.activity.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

В Android Studio 3.6; это кажется сломанным. Я использовал этот метод в примерах приложений, но когда я использую его в этом реальном приложении, он терпит неудачу. IDE еще раз сообщает:

Ошибка при запуске приложения: действие по умолчанию не найдено.

IDE по-прежнему показывала ошибку конфигурации в области «запустить приложение» на панели инструментов (желтая стрелка на этом снимке экрана).

Ошибка в конфигурации запуска приложения

Чтобы исправить эту ошибку, я пробовал несколько перестроений проекта и, наконец, Файл >> «Недействительный кэш / перезапуск». Это не помогло. Чтобы запустить приложение, мне пришлось «Изменить конфигурации» и указать конкретное действие вместо действия по умолчанию:

Диалоговое окно редактирования конфигурации

person martshal    schedule 28.02.2020
comment
Скрыть этот путь ... Это действительно конфиденциальная информация ... Кто-то может скопировать ваш путь активности и продать его в игровом магазине - person PhysiOS; 24.03.2021

В AndroidManifest.xml

Я изменил здесь первое действие на MainActivity4 вместо MainActivity:

До:

    <activity android:name=".MainActivity" >
       <intent-filter>
           <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainActivity2" />
    <activity android:name=".MainActivity3" />
    <activity android:name=".MainActivity4" />
    <activity android:name=".MainActivity5" />
    <activity android:name=".MainActivity6"/>

После:

    <activity android:name=".MainActivity" />
    <activity android:name=".MainActivity2" />
    <activity android:name=".MainActivity3" />
    <activity android:name=".MainActivity4" >
       <intent-filter>
           <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainActivity5" />
    <activity android:name=".MainActivity6"/>
person Shady    schedule 10.01.2021

Если в файле debug \ AndroidManifest.xml возникают ошибки, убедитесь, что вы включили тег ‹activity android: name = .MaintActivity›! Например:

<activity android:name=".MainActivity"><intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
person Sammi Lin    schedule 28.03.2021